{"version":3,"file":"vendors.js","mappings":"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MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,M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pF,QAAQ6lF,GAAW,4BAnEd,WAqEGhpF,KAAKusF,IAEnBA,EAAI7oF,MAAM8lF,MACV+C,EAAMvC,GAAauC,IAEvBA,EAAM,KAAOxC,GAAwBwC,GAAkC,IAA5BH,EAAUplF,QAAQulF,GAAchyC,EAAW6xC,GAAa,QAM/FG,EAFAA,EAAI7oF,MAAM8lF,IAEJ,KAAOO,GADbwC,EAAMvC,GAAauC,IACoD,IAA5BH,EAAUplF,QAAQulF,GAAchyC,EAAW6xC,GAAa,OAIrF,KAARG,EAAa,KAAO3C,GAAa2C,EAAIppF,QAAQ,MAAO,WAAqD,IAA5BipF,EAAUplF,QAAQulF,GAAchyC,EAAW6xC,EAAWtC,GAAgB,KAAO,IAGxK,OAAOyC,CACX,GACJ,CAzHwBS,CAAQhB,EAAUC,EAASrO,EAAQkM,GAKvD,OADS,IAAItiF,SAASykF,EADT,YAAeC,EAAf,s2CAEHztD,KAAKm/C,EACnB,CCsFe,CAAO+M,EAAgB/M,EAClC,EACOmO,CACX,CAT2B,KAUajB,SC1JpCmC,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQ1tB,SAAU,yBAC/B,CAAE0tB,UAAW,aAAc1tB,SAAU,+BACrC,CAAE0tB,UAAW,QAAS1tB,SAAU,0BAChC,CAAE0tB,UAAW,QAAS1tB,SAAU,0BAChC,CAAE0tB,UAAW,OAAQ1tB,SAAU,qCAE/B2tB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,SACA,YACA,mBACA,WACA,UACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,UACA,eACA,cACA,cACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,YACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,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AE3Bsa,EAAIg3B,OAAOhjD,GAAKwiD,EAAOxiD,EAC3B,CAER,CACA,OAAOgsB,CACX,EACAk1B,EAAWkC,MAAQ,cACnBlC,EAAWmC,OAAS,eACpBnC,EAAWI,iBAAmBP,EACvBG,CACX,CAhL+B,GAqL3BoC,EAAqB,CACrB,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,IACP,IAAO,QACP,IAAO,QACP,IAAO,KACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,OACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,KACP,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,IACP,IAAO,IACP,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,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,OACP,IAAO,OACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,QCpWX,SAAWxC,GACP,IAAIyC,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,MAA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AAQ6lF,GAAW,4BAnEd,WAqEGhpF,KAAKusF,IAEnBA,EAAI7oF,MAAM8lF,MACV+C,EAAMvC,GAAauC,IAEvBA,EAAM,KAAOxC,GAAwBwC,GAAkC,IAA5BH,EAAUplF,QAAQulF,GAAchyC,EAAW6xC,GAAa,QAM/FG,EAFAA,EAAI7oF,MAAM8lF,IAEJ,KAAOO,GADbwC,EAAMvC,GAAauC,IACoD,IAA5BH,EAAUplF,QAAQulF,GAAchyC,EAAW6xC,GAAa,OAIrF,KAARG,EAAa,KAAO3C,GAAa2C,EAAIppF,QAAQ,MAAO,WAAqD,IAA5BipF,EAAUplF,QAAQulF,GAAchyC,EAAW6xC,EAAWtC,GAAgB,KAAO,IAGxK,OAAOyC,CACX,GACJ,CAzHwBS,CAAQhB,EAAUC,EAASrO,EAAQkM,GAKvD,OADS,IAAItiF,SAASykF,EADT,YAAeC,EAAf,s2CAEHztD,KAAKm/C,EACnB,CCsFe,CAAO+M,EAAgB/M,EAClC,EACOmO,CACX,CAT2B,KAUajB,QAVxC,IChJImC,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQ1tB,SAAU,yBAC/B,CAAE0tB,UAAW,aAAc1tB,SAAU,+BACrC,CAAE0tB,UAAW,QAAS1tB,SAAU,0BAChC,CAAE0tB,UAAW,QAAS1tB,SAAU,0BAChC,CAAE0tB,UAAW,OAAQ1tB,SAAU,qCAE/B2tB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,SACA,YACA,mBACA,WACA,UACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,UACA,eACA,cACA,cACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,YACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA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,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,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,MA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GAqL3BoC,EAAqB,CACrB,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,IACP,IAAO,QACP,IAAO,QACP,IAAO,KACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,OACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,KACP,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,IACP,IAAO,IACP,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,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,OACP,IAAO,OACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,QCpWX,SAAWxC,GACP,IAAIyC,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,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0tB,UAAW,QAAS1tB,SAAU,0BAChC,CAAE0tB,UAAW,OAAQ1tB,SAAU,qCAE/B2tB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,SACA,YACA,mBACA,WACA,UACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,UACA,eACA,cACA,cACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,YACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,eACA,UACA,qBAEoC,WACpC,SAASC,IACT,CACAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACNpxD,WAAYqxD,IAGxB,EACAG,EAAmBI,SAAW,SAAUv1E,GACpC,IAAIta,EAAOF,KAAK4vF,iBAEhB,OADa5vF,KAAKgwF,eAAe9vF,EAAMsa,EAE3C,EACAm1E,EAAmBK,eAAiB,SAAU9vF,EAAMsa,GAChDxa,KAAKwvF,YAActvF,EAAK2vF,UAAU1xD,WAClCn+B,KAAKuvF,WAAarvF,EAAK2vF,UAAUC,KACjC9vF,KAAKiwF,YAAcxyD,SAASS,cAAc,OAC1Cl+B,KAAKiwF,YAAYhwC,UAAYzlC,EAC7Bxa,KAAKkwF,gBACLlwF,KAAKmwF,iBACLnwF,KAAKowF,iBACL,IAAIC,EAAerwF,KAAKiwF,YAAYhwC,UAEpC,OADAjgD,KAAKswF,gBACED,EAAa5qF,QAAQ,QAAS,IACzC,EACAkqF,EAAmBW,cAAgB,WAG/B,IADA,IAAIC,EAAQvwF,KAAKiwF,YAAYO,SACpBhsE,EAAI,EAAGA,EAAI+rE,EAAMjwF,OAAQkkB,IAE9B,IADA,IAAIirE,EAAYc,EAAMnlF,SAASoZ,EAAEzkB,WAAY,KAAKo+B,WA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IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,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P,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,IACP,IAAO,QACP,IAAO,QACP,IAAO,KACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,OACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,KACP,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,IACP,IAAO,IACP,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,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,OACP,IAAO,OACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,QCpWX,SAAWxC,GACP,IAAIyC,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,MAA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MAAM8lF,MACV+C,EAAMvC,GAAauC,IAEvBA,EAAM,KAAOxC,GAAwBwC,GAAkC,IAA5BH,EAAUplF,QAAQulF,GAAchyC,EAAW6xC,GAAa,QAM/FG,EAFAA,EAAI7oF,MAAM8lF,IAEJ,KAAOO,GADbwC,EAAMvC,GAAauC,IACoD,IAA5BH,EAAUplF,QAAQulF,GAAchyC,EAAW6xC,GAAa,OAIrF,KAARG,EAAa,KAAO3C,GAAa2C,EAAIppF,QAAQ,MAAO,WAAqD,IAA5BipF,EAAUplF,QAAQulF,GAAchyC,EAAW6xC,EAAWtC,GAAgB,KAAO,IAGxK,OAAOyC,CACX,GACJ,CAzHwBS,CAAQhB,EAAUC,EAASrO,EAAQkM,GAKvD,OADS,IAAItiF,SAASykF,EADT,YAAeC,EAAf,s2CAEHztD,KAAKm/C,EACnB,CCsFe,CAAO+M,EAAgB/M,EAClC,EACOmO,CACX,CAT2B,KAUajB,SC1JpCmC,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQ1tB,SAAU,yBAC/B,CAAE0tB,UAAW,aAAc1tB,SAAU,+BACrC,CAAE0tB,UAAW,QAAS1tB,SAAU,0BAChC,CAAE0tB,UAAW,QAAS1tB,SAAU,0BAChC,CAAE0tB,UAAW,OAAQ1tB,SAAU,qCAE/B2tB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,SACA,YACA,mBACA,WACA,UACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,UACA,eACA,cACA,cACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,YACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA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AAO,IACP,IAAO,QACP,IAAO,QACP,IAAO,KACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,OACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,KACP,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,IACP,IAAO,IACP,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,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,OACP,IAAO,OACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,QCpWX,SAAWxC,GACP,IAAIyC,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,M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iBACA,UACA,WACA,eACA,iBACA,gBACA,SACA,YACA,mBACA,WACA,UACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,UACA,eACA,cACA,cACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,YACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,eACA,UACA,oBCvGAslJ,IDyGoC,WACpC,SAASrlJ,IACT,CACAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACNpxD,WAAYqxD,IAGxB,EACAG,EAAmBI,SAAW,SAAUv1E,GACpC,IAAIta,EAAOF,KAAK4vF,iBAEhB,OADa5vF,KAAKgwF,eAAe9vF,EAAMsa,EAE3C,EACAm1E,EAAmBK,eAAiB,SAAU9vF,EAAMsa,GAChDxa,KAAKwvF,YAActvF,EAAK2vF,UAAU1xD,WAClCn+B,KAAKuvF,WAAarvF,EAAK2vF,UAAUC,KACjC9vF,KAAKiwF,YAAcxyD,SAASS,cAAc,OAC1Cl+B,KAAKiwF,YAAYhwC,UAAYzlC,EAC7Bxa,KAAKkwF,gBACLlwF,KAAKmwF,iBACLnwF,KAAKowF,iBACL,IAAIC,EAAerwF,KAAKiwF,YAAYhwC,UAEpC,OADAjgD,KAAKswF,gBACED,EAAa5qF,QAAQ,QAAS,IACzC,EACAkqF,EAAmBW,cAAgB,WAG/B,IADA,IAAIC,EAAQvwF,KAAKiwF,YAAYO,SACpBhsE,EAAI,EAAGA,EAAI+rE,EAAMjwF,OAAQkkB,IAE9B,IADA,IAAIirE,EAAYc,EAAMnlF,SAASoZ,EAAEzkB,WAAY,KAAKo+B,WACzC39B,EAAI,EAAGA,EAAIivF,EAAUnvF,OAAQE,IAClCR,KAAKiwF,YAAYO,SAASplF,SAASoZ,EAAEzkB,WAAY,KAAKosE,gBAAgBsjB,EAAUrk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CzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,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,yBAAyBlnQ,SAAS,KAAM,OAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,OAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,OAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,OAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,OAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,OAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAE7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAM,MAC7C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,MAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,MAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,MAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,MAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,MAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,MAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,MAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,KAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAAKikT,yBAAyBlnQ,SAAS,MAAO,OAC9C/8C,KAA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IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAM/E7B,EAA8BsD,gBAAkB,CAC5C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IA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K,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAMxC1D,EAA8B8D,kBAAoB,CAC9C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAA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CACX,EACAk1B,EAAWkC,MAAQ,cACnBlC,EAAWmC,OAAS,eACpBnC,EAAWI,iBAAmBP,EACvBG,CACX,CAhL+B,GAqL3BoC,EAAqB,CACrB,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,IACP,IAAO,QACP,IAAO,QACP,IAAO,KACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,OACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,KACP,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,IACP,IAAO,IACP,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,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,OACP,IAAO,OACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,QCpWX,SAAWxC,GACP,IAAIyC,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,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O,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,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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GACJ,CAzHwBS,CAAQhB,EAAUC,EAASrO,EAAQkM,GAKvD,OADS,IAAItiF,SAASykF,EADT,YAAeC,EAAf,s2CAEHztD,KAAKm/C,EACnB,CCsFe,CAAO+M,EAAgB/M,EAClC,EACOmO,CACX,CAT2B,KAUajB,SC1JpCmC,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQ1tB,SAAU,yBAC/B,CAAE0tB,UAAW,aAAc1tB,SAAU,+BACrC,CAAE0tB,UAAW,QAAS1tB,SAAU,0BAChC,CAAE0tB,UAAW,QAAS1tB,SAAU,0BAChC,CAAE0tB,UAAW,OAAQ1tB,SAAU,qCAE/B2tB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,SACA,YACA,mBACA,WACA,UACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,UACA,eACA,cACA,cACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,YACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,eACA,UACA,qBAEoC,WACpC,SAASC,IACT,CACAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACNpxD,WAAYqxD,IAGxB,EACAG,EAAmBI,SAAW,SAAUv1E,GACpC,IAAIta,EAAOF,KAAK4vF,iBAEhB,OADa5vF,KAAKgwF,eAAe9vF,EAAMsa,EAE3C,EACAm1E,EAAmBK,eAAiB,SAAU9vF,EAAMsa,GAChDxa,KAAKwvF,YAActvF,EAAK2vF,UAAU1xD,WAClCn+B,KAAKuvF,WAAarvF,EAAK2vF,UAAUC,KACjC9vF,KAAKiwF,YAAcx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AAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAmE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O,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,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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AIppF,QAAQ,MAAO,WAAqD,IAA5BipF,EAAUplF,QAAQulF,GAAchyC,EAAW6xC,EAAWtC,GAAgB,KAAO,IAGxK,OAAOyC,CACX,GACJ,CAzHwBS,CAAQhB,EAAUC,EAASrO,EAAQkM,GAKvD,OADS,IAAItiF,SAASykF,EADT,YAAeC,EAAf,s2CAEHztD,KAAKm/C,EACnB,CCsFe,CAAO+M,EAAgB/M,EAClC,EACOmO,CACX,CAT2B,KAUajB,SC1JpCmC,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQ1tB,SAAU,yBAC/B,CAAE0tB,UAAW,aAAc1tB,SAAU,+BACrC,CAAE0tB,UAAW,QAAS1tB,SAAU,0BAChC,CAAE0tB,UAAW,QAAS1tB,SAAU,0BAChC,CAAE0tB,UAAW,OAAQ1tB,SAAU,qCAE/B2tB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,SACA,YACA,mBACA,WACA,UACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,UACA,eACA,cACA,cACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,YACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,eACA,UACA,oBAEAC,GAAoC,WACpC,SAASA,IACT,CA0EA,OAzEAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACNpxD,WAAYqxD,IAGxB,EACAG,EAAmBI,SAAW,SAAUv1E,GACpC,IAAIta,EAAOF,KAAK4vF,iBAEhB,OADa5vF,KAAKgwF,eAAe9vF,EAAMsa,EAE3C,EACAm1E,EAAmBK,eAAiB,SAAU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KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,QACjC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,QAC5B,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,QAC5B,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,EAAG,OAAS,OAAS,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,QAClC,MAAS,CAAC,OA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AG,EAAG,MAChC,GAAM,EAAE,OAAS,OAAS,EAAG,EAAG,MAChC,GAAM,EAAE,OAAS,OAAS,EAAG,EAAG,MAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAC/B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAC/B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAC/B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAC/B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,OAAS,EAAG,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MACzB,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAChC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAChC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAChC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAC1B,IAAO,CAAC,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K,KACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MACL,EAAK,MACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MAgCP,MAAMC,GACJ,WAAAlse,CAAY18B,EAAO81H,GACjBn4H,KAAK+hC,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","sources":["webpack://asp.net/./node_modules/shepherd.js/dist/css/shepherd.css","webpack://asp.net/./node_modules/css-loader/dist/runtime/api.js","webpack://asp.net/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://asp.net/./node_modules/moment/locale/af.js","webpack://asp.net/./node_modules/moment/locale/ar-dz.js","webpack://asp.net/./node_modules/moment/locale/ar-kw.js","webpack://asp.net/./node_modules/moment/locale/ar-ly.js","webpack://asp.net/./node_modules/moment/locale/ar-ma.js","webpack://asp.net/./node_modules/moment/locale/ar-ps.js","webpack://asp.net/./node_modules/moment/locale/ar-sa.js","webpack://asp.net/./node_modules/moment/locale/ar-tn.js","webpack://asp.net/./node_modules/moment/locale/ar.js","webpack://asp.net/./node_modules/moment/locale/az.js","webpack://asp.net/./node_modules/moment/locale/be.js","webpack://asp.net/./node_modules/moment/locale/bg.js","webpack://asp.net/./node_modules/moment/locale/bm.js","webpack://asp.net/./node_modules/moment/locale/bn-bd.js","webpack://asp.net/./node_modules/moment/locale/bn.js","webpack://asp.net/./node_modules/moment/locale/bo.js","webpack://asp.net/./node_modules/moment/locale/br.js","webpack://asp.net/./node_modules/moment/locale/bs.js","webpack://asp.net/./node_modules/moment/locale/ca.js","webpack://asp.net/./node_modules/moment/locale/cs.js","webpack://asp.net/./node_modules/moment/locale/cv.js","webpack://asp.net/./node_modules/moment/locale/cy.js","webpack://asp.net/./node_modules/moment/locale/da.js","webpack://asp.net/./node_modules/moment/locale/de-at.js","webpack://asp.net/./node_modules/moment/locale/de-ch.js","webpack://asp.net/./node_modules/moment/locale/de.js","webpack://asp.net/./node_modules/moment/locale/dv.js","webpack://asp.net/./node_modules/moment/locale/el.js","webpack://asp.net/./node_modules/moment/locale/en-au.js","webpack://asp.net/./node_modules/moment/locale/en-ca.js","webpack://asp.net/./node_modules/moment/locale/en-gb.js","webpack://asp.net/./node_modules/moment/locale/en-ie.js","webpack://asp.net/./node_modules/moment/locale/en-il.js","webpack://asp.net/./node_modules/moment/locale/en-in.js","webpack://asp.net/./node_modules/moment/locale/en-nz.js","webpack://asp.net/./node_modules/moment/locale/en-sg.js","webpack://asp.net/./node_modules/moment/locale/eo.js","webpack://asp.net/./node_modules/moment/locale/es-do.js","webpack://asp.net/./node_modules/moment/locale/es-mx.js","webpack://asp.net/./node_modules/moment/locale/es-us.js","webpack://asp.net/./node_modules/moment/locale/es.js","webpack://asp.net/./node_modules/moment/locale/et.js","webpack://asp.net/./node_modules/moment/locale/eu.js","webpack://asp.net/./node_modules/moment/locale/fa.js","webpack://asp.net/./node_modules/moment/locale/fi.js","webpack://asp.net/./node_modules/moment/locale/fil.js","webpack://asp.net/./node_modules/moment/locale/fo.js","webpack://asp.net/./node_modules/moment/locale/fr-ca.js","webpack://asp.net/./node_modules/moment/locale/fr-ch.js","webpack://asp.net/./node_modules/moment/locale/fr.js","webpack://asp.net/./node_modules/moment/locale/fy.js","webpack://asp.net/./node_modules/moment/locale/ga.js","webpack://asp.net/./node_modules/moment/locale/gd.js","webpack://asp.net/./node_modules/moment/locale/gl.js","webpack://asp.net/./node_modules/moment/locale/gom-deva.js","webpack://asp.net/./node_modules/moment/locale/gom-latn.js","webpack://asp.net/./node_modules/moment/locale/gu.js","webpack://asp.net/./node_modules/moment/locale/he.js","webpack://asp.net/./node_modules/moment/locale/hi.js","webpack://asp.net/./node_modules/moment/locale/hr.js","webpack://asp.net/./node_modules/moment/locale/hu.js","webpack://asp.net/./node_modules/moment/locale/hy-am.js","webpack://asp.net/./node_modules/moment/locale/id.js","webpack://asp.net/./node_modules/moment/locale/is.js","webpack://asp.net/./node_modules/moment/locale/it-ch.js","webpack://asp.net/./node_modules/moment/locale/it.js","webpack://asp.net/./node_modules/moment/locale/ja.js","webpack://asp.net/./node_modules/moment/locale/jv.js","webpack://asp.net/./node_modules/moment/locale/ka.js","webpack://asp.net/./node_modules/moment/locale/kk.js","webpack://asp.net/./node_modules/moment/locale/km.js","webpack://asp.net/./node_modules/moment/locale/kn.js","webpack://asp.net/./node_modules/moment/locale/ko.js","webpack://asp.net/./node_modules/moment/locale/ku-kmr.js","webpack://asp.net/./node_modules/moment/locale/ku.js","webpack://asp.net/./node_modules/moment/locale/ky.js","webpack://asp.net/./node_modules/moment/locale/lb.js","webpack://asp.net/./node_modules/moment/locale/lo.js","webpack://asp.net/./node_modules/moment/locale/lt.js","webpack://asp.net/./node_modules/moment/locale/lv.js","webpack://asp.net/./node_modules/moment/locale/me.js","webpack://asp.net/./node_modules/moment/locale/mi.js","webpack://asp.net/./node_modules/moment/locale/mk.js","webpack://asp.net/./node_modules/moment/locale/ml.js","webpack://asp.net/./node_modules/moment/locale/mn.js","webpack://asp.net/./node_modules/moment/locale/mr.js","webpack://asp.net/./node_modules/moment/locale/ms-my.js","webpack://asp.net/./node_modules/moment/locale/ms.js","webpack://asp.net/./node_modules/moment/locale/mt.js","webpack://asp.net/./node_modules/moment/locale/my.js","webpack://asp.net/./node_modules/moment/locale/nb.js","webpack://asp.net/./node_modules/moment/locale/ne.js","webpack://asp.net/./node_modules/moment/locale/nl-be.js","webpack://asp.net/./node_modules/moment/locale/nl.js","webpack://asp.net/./node_modules/moment/locale/nn.js","webpack://asp.net/./node_modules/moment/locale/oc-lnc.js","webpack://asp.net/./node_modules/moment/locale/pa-in.js","webpack://asp.net/./node_modules/moment/locale/pl.js","webpack://asp.net/./node_modules/moment/locale/pt-br.js","webpack://asp.net/./node_modules/moment/locale/pt.js","webpack://asp.net/./node_modules/moment/locale/ro.js","webpack://asp.net/./node_modules/moment/locale/ru.js","webpack://asp.net/./node_modules/moment/locale/sd.js","webpack://asp.net/./node_modules/moment/locale/se.js","webpack://asp.net/./node_modules/moment/locale/si.js","webpack://asp.net/./node_modules/moment/locale/sk.js","webpack://asp.net/./node_modules/moment/locale/sl.js","webpack://asp.net/./node_modules/moment/locale/sq.js","webpack://asp.net/./node_modules/moment/locale/sr-cyrl.js","webpack://asp.net/./node_modules/moment/locale/sr.js","webpack://asp.net/./node_modules/moment/locale/ss.js","webpack://asp.net/./node_modules/moment/locale/sv.js","webpack://asp.net/./node_modules/moment/locale/sw.js","webpack://asp.net/./node_modules/moment/locale/ta.js","webpack://asp.net/./node_modules/moment/locale/te.js","webpack://asp.net/./node_modules/moment/locale/tet.js","webpack://asp.net/./node_modules/moment/locale/tg.js","webpack://asp.net/./node_modules/moment/locale/th.js","webpack://asp.net/./node_modules/moment/locale/tk.js","webpack://asp.net/./node_modules/moment/locale/tl-ph.js","webpack://asp.net/./node_modules/moment/locale/tlh.js","webpack://asp.net/./node_modules/moment/locale/tr.js","webpack://asp.net/./node_modules/moment/locale/tzl.js","webpack://asp.net/./node_modules/moment/locale/tzm-latn.js","webpack://asp.net/./node_modules/moment/locale/tzm.js","webpack://asp.net/./node_modules/moment/locale/ug-cn.js","webpack://asp.net/./node_modules/moment/locale/uk.js","webpack://asp.net/./node_modules/moment/locale/ur.js","webpack://asp.net/./node_modules/moment/locale/uz-latn.js","webpack://asp.net/./node_modules/moment/locale/uz.js","webpack://asp.net/./node_modules/moment/locale/vi.js","webpack://asp.net/./node_modules/moment/locale/x-pseudo.js","webpack://asp.net/./node_modules/moment/locale/yo.js","webpack://asp.net/./node_modules/moment/locale/zh-cn.js","webpack://asp.net/./node_modules/moment/locale/zh-hk.js","webpack://asp.net/./node_modules/moment/locale/zh-mo.js","webpack://asp.net/./node_modules/moment/locale/zh-tw.js","webpack://asp.net/./node_modules/moment/moment.js","webpack://asp.net/./node_modules/shepherd.js/dist/css/shepherd.css?ab18","webpack://asp.net/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://asp.net/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://asp.net/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://asp.net/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://asp.net/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://asp.net/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/AbortController.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/Errors.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/HttpClient.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/HubConnection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/ILogger.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/ITransport.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/Loggers.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/Subject.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/Utils.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/observer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/ajax.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/browser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/dom.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/animation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/child-property.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/component.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/draggable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/droppable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/l10n.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/touch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/observer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/ajax.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/browser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/dom.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/animation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/child-property.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/component.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/draggable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/droppable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/touch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/l10n.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/src/button/button.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/src/common/common.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/observer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/ajax.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/browser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/dom.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/animation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/child-property.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/component.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/draggable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/droppable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/l10n.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/touch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-compression/src/compression-writer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/observer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/ajax.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/browser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/dom.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/animation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/child-property.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/component.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/draggable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/droppable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/touch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/l10n.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/src/adaptors.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/src/manager.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/src/query.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-data/src/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/observer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/ajax.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/browser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/dom.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/animation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/child-property.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/component.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/draggable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/droppable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/l10n.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/touch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/auto-complete/auto-complete.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/drop-down-tree/drop-down-tree.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/src/sortable/sortable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/list-box/list-box.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/mention/mention.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/multi-select/checkbox-selection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/multi-select/float-label.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-dropdowns/src/multi-select/multi-select.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-file-utils/src/encoding.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-file-utils/src/save.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/footer-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/summary-cell-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/aggregate.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/batch-edit.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/checkbox-filter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/column-chooser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/column-menu.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/command-column.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/context-menu.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/detail-row.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/dialog-edit.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/template-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/edit.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/worksheets.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/worksheet.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/cell-style.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/column.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/row.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/image.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-compression/src/utils.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-compression/src/decompressor-huffman-tree.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-compression/src/checksum-calculator.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-compression/src/compression-reader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-compression/src/zip-archive.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/observer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/ajax.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/browser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/dom.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/animation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/child-property.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/component.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/draggable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/droppable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/touch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/l10n.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/value-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/csv-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/blob-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/auto-filters.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-excel-export/src/workbook.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-filter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/filter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/foreign-key.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/freeze.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/group.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/infinite-scroll.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/inline-edit.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/lazy-load-group.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/logger.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/normal-edit.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-writer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/utils.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/dictionary.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/enum.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-main-object-collection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-stream.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-string.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-file-utils/src/stream-writer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-name.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-operators.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-dictionary-properties.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-dictionary.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-number.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-array.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/cross-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-reference.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-catalog.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-cross-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/drawing/pdf-drawing.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-size.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-margins.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/enum.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/enum.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-settings.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-stream-writer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-layouter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-color.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-brush.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-solid-brush.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-pen.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-string-format.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-tokenizer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/enum.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transformation-matrix.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/constants.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/object-object-pair/dictionary.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transparency.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info-collection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/graphics-element.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/byte-array.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-table-info.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-record.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-head-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-metrics.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-horizontal-header-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-OS2-Table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-post-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-long-hor-metric.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-sub-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-info.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-loca-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-apple-cmap-sub-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-header.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/big-endian-writer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-reader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font-metrics.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/unicode-true-type-font.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-text-shape.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-bidirectional.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-boolean.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/image-decoder.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-gradient-brush.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/pdf-template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/tables/light-tables/enum.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/unit-convertor.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-image.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-bitmap.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-resources.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-tiling-brush.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-graphics.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-collection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer-collection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation-collection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/page-added-event-arguments.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-page-collection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-templates.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-collection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-document-page-collection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-cache-collection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font-metrics-factory.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/pdf-borders.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/style.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/element-layouter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/layout-element.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/text-layouter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/text-element.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/link-annotation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/action-link-annotation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/action.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/uri-action.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/uri-annotation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/pdf-text-web-link.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/layout/grid-layouter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-column.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-row.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-template-element.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-numbers-convertor.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-template-value-pair.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/multiple-value-field.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-page-number-field.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/composite-field.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/single-value-field.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/page-count-field.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-true-type-font.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/pdf-export.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/reorder.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/resize.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/row-reorder.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/virtual-scroll.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/common/excel-filter-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/autocomplete-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/batch-edit-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-filter-ui.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/column-freeze-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/combobox-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/command-column-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/date-filter-ui.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/datepicker-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/default-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/dialog-edit-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/dropdown-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-cell-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-cell-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-operator.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/freeze-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/group-lazy-load-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/inline-edit-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/base/mask-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/maskedtextbox/maskedtextbox.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/inputmask-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/multiselect-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/number-filter-ui.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/numeric-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/string-filter-ui.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/timepicker-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-buttons/src/switch/switch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/toggleswitch-edit-cell.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/virtual-content-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/renderer/virtual-freeze-renderer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/freeze-row-model-generator.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/intersection-observer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/virtual-row-model-generator.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-grids/src/pager/pager.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/observer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/ajax.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/browser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/dom.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/animation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/child-property.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/component.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/draggable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/droppable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/l10n.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/touch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/src/input/input.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/observer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/ajax.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/browser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/dom.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/animation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/child-property.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/component.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/draggable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/droppable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/touch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/l10n.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-lists/src/common/list-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/observer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/ajax.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/browser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/dom.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/animation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/child-property.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/component.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/draggable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/droppable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/touch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/l10n.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/util.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/observer.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/ajax.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/browser.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/dom.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/base.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/animation.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/child-property.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/component.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/draggable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/droppable.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/l10n.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/touch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/template.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/src/common/collision.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/src/common/position.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/src/common/resize.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/src/popup/popup.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/katex/dist/katex.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/af.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ar-dz.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ar-kw.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ar-ly.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ar-ma.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ar-ps.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ar-sa.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ar-tn.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ar.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/az.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/be.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/bg.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/bm.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/bn-bd.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/bn.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/bo.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/br.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/bs.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ca.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/cs.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/cv.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/cy.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/da.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/de-at.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/de-ch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/de.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/dv.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/el.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/en-au.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/en-ca.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/en-gb.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/en-ie.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/en-il.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/en-in.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/en-nz.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/en-sg.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/eo.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/es-do.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/es-mx.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/es-us.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/es.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/et.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/eu.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/fa.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/fi.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/fil.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/fo.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/fr-ca.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/fr-ch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/fr.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/fy.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ga.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/gd.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/gl.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/gom-deva.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/gom-latn.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/gu.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/he.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/hi.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/hr.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/hu.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/hy-am.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/id.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/is.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/it-ch.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/it.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ja.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/jv.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ka.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/kk.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/km.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/kn.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ko.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ku-kmr.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ku.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ky.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/lb.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/lo.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/lt.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/lv.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/me.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/mi.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/mk.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ml.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/mn.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/mr.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ms-my.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ms.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/mt.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/my.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/nb.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ne.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/nl-be.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/nl.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/nn.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/oc-lnc.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/pa-in.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/pl.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/pt-br.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/pt.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ro.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ru.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/sd.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/se.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/si.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/sk.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/sl.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/sq.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/sr-cyrl.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/sr.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ss.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/sv.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/sw.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ta.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/te.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/tet.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/tg.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/th.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/tk.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/tl-ph.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/tlh.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/tr.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/tzl.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/tzm-latn.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/tzm.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ug-cn.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/uk.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/ur.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/uz-latn.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/uz.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/vi.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/x-pseudo.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/yo.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/zh-cn.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/zh-hk.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/zh-mo.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/locale/zh-tw.js","webpack://asp.net/../TrifortCMS.Web.Common/node_modules/moment/moment.js","webpack://asp.net/./node_modules/shepherd.js/dist/cjs/shepherd.cjs"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.shepherd-button{background:#3288e6;border:0;border-radius:3px;color:hsla(0,0%,100%,.75);cursor:pointer;margin-right:.5rem;padding:.5rem 1.5rem;transition:all .5s ease}.shepherd-button:not(:disabled):hover{background:#196fcc;color:hsla(0,0%,100%,.75)}.shepherd-button.shepherd-button-secondary{background:#f1f2f3;color:rgba(0,0,0,.75)}.shepherd-button.shepherd-button-secondary:not(:disabled):hover{background:#d6d9db;color:rgba(0,0,0,.75)}.shepherd-button:disabled{cursor:not-allowed}\n.shepherd-footer{border-bottom-left-radius:5px;border-bottom-right-radius:5px;display:flex;justify-content:flex-end;padding:0 .75rem .75rem}.shepherd-footer .shepherd-button:last-child{margin-right:0}\n.shepherd-cancel-icon{background:transparent;border:none;color:hsla(0,0%,50%,.75);cursor:pointer;font-size:2em;font-weight:400;margin:0;padding:0;transition:color .5s ease}.shepherd-cancel-icon:hover{color:rgba(0,0,0,.75)}.shepherd-has-title .shepherd-content .shepherd-cancel-icon{color:hsla(0,0%,50%,.75)}.shepherd-has-title .shepherd-content .shepherd-cancel-icon:hover{color:rgba(0,0,0,.75)}\n.shepherd-title{color:rgba(0,0,0,.75);display:flex;flex:1 0 auto;font-size:1rem;font-weight:400;margin:0;padding:0}\n.shepherd-header{align-items:center;border-top-left-radius:5px;border-top-right-radius:5px;display:flex;justify-content:flex-end;line-height:2em;padding:.75rem .75rem 0}.shepherd-has-title .shepherd-content .shepherd-header{background:#e6e6e6;padding:1em}\n.shepherd-text{color:rgba(0,0,0,.75);font-size:1rem;line-height:1.3em;padding:.75em}.shepherd-text p{margin-top:0}.shepherd-text p:last-child{margin-bottom:0}\n.shepherd-content{border-radius:5px;outline:none;padding:0}\n.shepherd-element{background:#fff;border-radius:5px;box-shadow:0 1px 4px rgba(0,0,0,.2);max-width:400px;opacity:0;outline:none;transition:opacity .3s,visibility .3s;visibility:hidden;width:100%;z-index:9999}.shepherd-enabled.shepherd-element{opacity:1;visibility:visible}.shepherd-element[data-popper-reference-hidden]:not(.shepherd-centered){opacity:0;pointer-events:none;visibility:hidden}.shepherd-element,.shepherd-element *,.shepherd-element :after,.shepherd-element :before{box-sizing:border-box}.shepherd-arrow,.shepherd-arrow:before{height:16px;position:absolute;width:16px;z-index:-1}.shepherd-arrow:before{background:#fff;content:\"\";transform:rotate(45deg)}.shepherd-element[data-popper-placement^=top]>.shepherd-arrow{bottom:-8px}.shepherd-element[data-popper-placement^=bottom]>.shepherd-arrow{top:-8px}.shepherd-element[data-popper-placement^=left]>.shepherd-arrow{right:-8px}.shepherd-element[data-popper-placement^=right]>.shepherd-arrow{left:-8px}.shepherd-element.shepherd-centered>.shepherd-arrow{opacity:0}.shepherd-element.shepherd-has-title[data-popper-placement^=bottom]>.shepherd-arrow:before{background-color:#e6e6e6}.shepherd-target-click-disabled.shepherd-enabled.shepherd-target,.shepherd-target-click-disabled.shepherd-enabled.shepherd-target *{pointer-events:none}\n.shepherd-modal-overlay-container{height:0;left:0;opacity:0;overflow:hidden;pointer-events:none;position:fixed;top:0;transition:all .3s ease-out,height 0ms .3s,opacity .3s 0ms;width:100vw;z-index:9997}.shepherd-modal-overlay-container.shepherd-modal-is-visible{height:100vh;opacity:.5;transform:translateZ(0);transition:all .3s ease-out,height 0s 0s,opacity .3s 0s}.shepherd-modal-overlay-container.shepherd-modal-is-visible path{pointer-events:all}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/shepherd.js/dist/css/shepherd.css\"],\"names\":[],\"mappings\":\"AAAA,iBAAiB,kBAAkB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,sCAAsC,kBAAkB,CAAC,yBAAyB,CAAC,2CAA2C,kBAAkB,CAAC,qBAAqB,CAAC,gEAAgE,kBAAkB,CAAC,qBAAqB,CAAC,0BAA0B,kBAAkB;AACpe,iBAAiB,6BAA6B,CAAC,8BAA8B,CAAC,YAAY,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,6CAA6C,cAAc;AACvM,sBAAsB,sBAAsB,CAAC,WAAW,CAAC,wBAAwB,CAAC,cAAc,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,4BAA4B,qBAAqB,CAAC,4DAA4D,wBAAwB,CAAC,kEAAkE,qBAAqB;AAC1Y,gBAAgB,qBAAqB,CAAC,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS;AAClH,iBAAiB,kBAAkB,CAAC,0BAA0B,CAAC,2BAA2B,CAAC,YAAY,CAAC,wBAAwB,CAAC,eAAe,CAAC,uBAAuB,CAAC,uDAAuD,kBAAkB,CAAC,WAAW;AAC9P,eAAe,qBAAqB,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,iBAAiB,YAAY,CAAC,4BAA4B,eAAe;AAC7J,kBAAkB,iBAAiB,CAAC,YAAY,CAAC,SAAS;AAC1D,kBAAkB,eAAe,CAAC,iBAAiB,CAAC,mCAAmC,CAAC,eAAe,CAAC,SAAS,CAAC,YAAY,CAAC,qCAAqC,CAAC,iBAAiB,CAAC,UAAU,CAAC,YAAY,CAAC,mCAAmC,SAAS,CAAC,kBAAkB,CAAC,wEAAwE,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,yFAAyF,qBAAqB,CAAC,uCAAuC,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,uBAAuB,eAAe,CAAC,UAAU,CAAC,uBAAuB,CAAC,8DAA8D,WAAW,CAAC,iEAAiE,QAAQ,CAAC,+DAA+D,UAAU,CAAC,gEAAgE,SAAS,CAAC,oDAAoD,SAAS,CAAC,2FAA2F,wBAAwB,CAAC,oIAAoI,mBAAmB;AAC5wC,kCAAkC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,mBAAmB,CAAC,cAAc,CAAC,KAAK,CAAC,0DAA0D,CAAC,WAAW,CAAC,YAAY,CAAC,4DAA4D,YAAY,CAAC,UAAU,CAAC,uBAAuB,CAAC,uDAAuD,CAAC,iEAAiE,kBAAkB\",\"sourcesContent\":[\".shepherd-button{background:#3288e6;border:0;border-radius:3px;color:hsla(0,0%,100%,.75);cursor:pointer;margin-right:.5rem;padding:.5rem 1.5rem;transition:all .5s ease}.shepherd-button:not(:disabled):hover{background:#196fcc;color:hsla(0,0%,100%,.75)}.shepherd-button.shepherd-button-secondary{background:#f1f2f3;color:rgba(0,0,0,.75)}.shepherd-button.shepherd-button-secondary:not(:disabled):hover{background:#d6d9db;color:rgba(0,0,0,.75)}.shepherd-button:disabled{cursor:not-allowed}\\n.shepherd-footer{border-bottom-left-radius:5px;border-bottom-right-radius:5px;display:flex;justify-content:flex-end;padding:0 .75rem .75rem}.shepherd-footer .shepherd-button:last-child{margin-right:0}\\n.shepherd-cancel-icon{background:transparent;border:none;color:hsla(0,0%,50%,.75);cursor:pointer;font-size:2em;font-weight:400;margin:0;padding:0;transition:color .5s ease}.shepherd-cancel-icon:hover{color:rgba(0,0,0,.75)}.shepherd-has-title .shepherd-content .shepherd-cancel-icon{color:hsla(0,0%,50%,.75)}.shepherd-has-title .shepherd-content .shepherd-cancel-icon:hover{color:rgba(0,0,0,.75)}\\n.shepherd-title{color:rgba(0,0,0,.75);display:flex;flex:1 0 auto;font-size:1rem;font-weight:400;margin:0;padding:0}\\n.shepherd-header{align-items:center;border-top-left-radius:5px;border-top-right-radius:5px;display:flex;justify-content:flex-end;line-height:2em;padding:.75rem .75rem 0}.shepherd-has-title .shepherd-content .shepherd-header{background:#e6e6e6;padding:1em}\\n.shepherd-text{color:rgba(0,0,0,.75);font-size:1rem;line-height:1.3em;padding:.75em}.shepherd-text p{margin-top:0}.shepherd-text p:last-child{margin-bottom:0}\\n.shepherd-content{border-radius:5px;outline:none;padding:0}\\n.shepherd-element{background:#fff;border-radius:5px;box-shadow:0 1px 4px rgba(0,0,0,.2);max-width:400px;opacity:0;outline:none;transition:opacity .3s,visibility .3s;visibility:hidden;width:100%;z-index:9999}.shepherd-enabled.shepherd-element{opacity:1;visibility:visible}.shepherd-element[data-popper-reference-hidden]:not(.shepherd-centered){opacity:0;pointer-events:none;visibility:hidden}.shepherd-element,.shepherd-element *,.shepherd-element :after,.shepherd-element :before{box-sizing:border-box}.shepherd-arrow,.shepherd-arrow:before{height:16px;position:absolute;width:16px;z-index:-1}.shepherd-arrow:before{background:#fff;content:\\\"\\\";transform:rotate(45deg)}.shepherd-element[data-popper-placement^=top]>.shepherd-arrow{bottom:-8px}.shepherd-element[data-popper-placement^=bottom]>.shepherd-arrow{top:-8px}.shepherd-element[data-popper-placement^=left]>.shepherd-arrow{right:-8px}.shepherd-element[data-popper-placement^=right]>.shepherd-arrow{left:-8px}.shepherd-element.shepherd-centered>.shepherd-arrow{opacity:0}.shepherd-element.shepherd-has-title[data-popper-placement^=bottom]>.shepherd-arrow:before{background-color:#e6e6e6}.shepherd-target-click-disabled.shepherd-enabled.shepherd-target,.shepherd-target-click-disabled.shepherd-enabled.shepherd-target *{pointer-events:none}\\n.shepherd-modal-overlay-container{height:0;left:0;opacity:0;overflow:hidden;pointer-events:none;position:fixed;top:0;transition:all .3s ease-out,height 0ms .3s,opacity .3s 0ms;width:100vw;z-index:9997}.shepherd-modal-overlay-container.shepherd-modal-is-visible{height:100vh;opacity:.5;transform:translateZ(0);transition:all .3s ease-out,height 0s 0s,opacity .3s 0s}.shepherd-modal-overlay-container.shepherd-modal-is-visible path{pointer-events:all}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\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 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Palestine) [ar-ps]\n//! author : Majd Al-Shihabi : https://github.com/majdal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arPs = moment.defineLocale('ar-ps', {\n months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n '_'\n ),\n monthsShort:\n 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .split('') // reversed since negative lookbehind not supported everywhere\n .reverse()\n .join('')\n .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n return numberMap[match];\n })\n .split('')\n .reverse()\n .join('')\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arPs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! author : Rasid Redzic : https://github.com/rasidre\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 'm':\n return withoutSuffix\n ? 'jedna minuta'\n : isFuture\n ? 'jednu minutu'\n : 'jedne minute';\n }\n }\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jedan sat';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: processRelativeTime,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = {\n standalone:\n 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Kurdish [ku-kmr]\n//! authors : Mazlum Özdogan : https://github.com/mergehez\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(num, withoutSuffix, key, isFuture) {\n var format = {\n s: ['çend sanîye', 'çend sanîyeyan'],\n ss: [num + ' sanîye', num + ' sanîyeyan'],\n m: ['deqîqeyek', 'deqîqeyekê'],\n mm: [num + ' deqîqe', num + ' deqîqeyan'],\n h: ['saetek', 'saetekê'],\n hh: [num + ' saet', num + ' saetan'],\n d: ['rojek', 'rojekê'],\n dd: [num + ' roj', num + ' rojan'],\n w: ['hefteyek', 'hefteyekê'],\n ww: [num + ' hefte', num + ' hefteyan'],\n M: ['mehek', 'mehekê'],\n MM: [num + ' meh', num + ' mehan'],\n y: ['salek', 'salekê'],\n yy: [num + ' sal', num + ' salan'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n // function obliqueNumSuffix(num) {\n // if(num.includes(':'))\n // num = parseInt(num.split(':')[0]);\n // else\n // num = parseInt(num);\n // return num == 0 || num % 10 == 1 ? 'ê'\n // : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n // }\n function ezafeNumSuffix(num) {\n num = '' + num;\n var l = num.substring(num.length - 1),\n ll = num.length > 1 ? num.substring(num.length - 2) : '';\n if (\n !(ll == 12 || ll == 13) &&\n (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n )\n return 'yê';\n return 'ê';\n }\n\n var kuKmr = moment.defineLocale('ku-kmr', {\n // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n // But the names below are more well known and handy\n months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n '_'\n ),\n monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n monthsParseExact: true,\n weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'bn' : 'BN';\n } else {\n return isLower ? 'pn' : 'PN';\n }\n },\n meridiemParse: /bn|BN|pn|PN/,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[a] YYYY[an]',\n LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n ll: 'Do MMM[.] YYYY[an]',\n lll: 'Do MMM[.] YYYY[an] HH:mm',\n llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n },\n calendar: {\n sameDay: '[Îro di saet] LT [de]',\n nextDay: '[Sibê di saet] LT [de]',\n nextWeek: 'dddd [di saet] LT [de]',\n lastDay: '[Duh di saet] LT [de]',\n lastWeek: 'dddd[a borî di saet] LT [de]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'di %s de',\n past: 'berî %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n ordinal: function (num, period) {\n var p = period.toLowerCase();\n if (p.includes('w') || p.includes('m')) return num + '.';\n\n return num + ezafeNumSuffix(num);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return kuKmr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays:\n 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort:\n 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'én time',\n hh: '%d timer',\n d: 'én dag',\n dd: '%d dager',\n w: 'én uke',\n ww: '%d uker',\n M: 'én måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","\n import API from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../css-loader/dist/cjs.js!./shepherd.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../css-loader/dist/cjs.js!./shepherd.css\";\n export default content && content.locals ? content.locals : undefined;\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nexport class AbortController {\r\n constructor() {\r\n this._isAborted = false;\r\n this.onabort = null;\r\n }\r\n abort() {\r\n if (!this._isAborted) {\r\n this._isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n get signal() {\r\n return this;\r\n }\r\n get aborted() {\r\n return this._isAborted;\r\n }\r\n}\r\n//# sourceMappingURL=AbortController.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient } from \"./HttpClient\";\r\n/** @private */\r\nexport class AccessTokenHttpClient extends HttpClient {\r\n constructor(innerClient, accessTokenFactory) {\r\n super();\r\n this._innerClient = innerClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n }\r\n async send(request) {\r\n let allowRetry = true;\r\n if (this._accessTokenFactory && (!this._accessToken || (request.url && request.url.indexOf(\"/negotiate?\") > 0))) {\r\n // don't retry if the request is a negotiate or if we just got a potentially new token from the access token factory\r\n allowRetry = false;\r\n this._accessToken = await this._accessTokenFactory();\r\n }\r\n this._setAuthorizationHeader(request);\r\n const response = await this._innerClient.send(request);\r\n if (allowRetry && response.statusCode === 401 && this._accessTokenFactory) {\r\n this._accessToken = await this._accessTokenFactory();\r\n this._setAuthorizationHeader(request);\r\n return await this._innerClient.send(request);\r\n }\r\n return response;\r\n }\r\n _setAuthorizationHeader(request) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (this._accessToken) {\r\n request.headers[HeaderNames.Authorization] = `Bearer ${this._accessToken}`;\r\n }\r\n // don't remove the header if there isn't an access token factory, the user manually added the header in this case\r\n else if (this._accessTokenFactory) {\r\n if (request.headers[HeaderNames.Authorization]) {\r\n delete request.headers[HeaderNames.Authorization];\r\n }\r\n }\r\n }\r\n getCookieString(url) {\r\n return this._innerClient.getCookieString(url);\r\n }\r\n}\r\n//# sourceMappingURL=AccessTokenHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Platform, getGlobalThis, isArrayBuffer } from \"./Utils\";\r\nexport class FetchHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n if (typeof fetch === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n this._jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n this._fetchType = requireFunc(\"node-fetch\");\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n this._fetchType = requireFunc(\"fetch-cookie\")(this._fetchType, this._jar);\r\n }\r\n else {\r\n this._fetchType = fetch.bind(getGlobalThis());\r\n }\r\n if (typeof AbortController === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n this._abortControllerType = requireFunc(\"abort-controller\");\r\n }\r\n else {\r\n this._abortControllerType = AbortController;\r\n }\r\n }\r\n /** @inheritDoc */\r\n async send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n const abortController = new this._abortControllerType();\r\n let error;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n request.headers = request.headers || {};\r\n if (isArrayBuffer(request.content)) {\r\n request.headers[\"Content-Type\"] = \"application/octet-stream\";\r\n }\r\n else {\r\n request.headers[\"Content-Type\"] = \"text/plain;charset=UTF-8\";\r\n }\r\n }\r\n let response;\r\n try {\r\n response = await this._fetchType(request.url, {\r\n body: request.content,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method,\r\n mode: \"cors\",\r\n redirect: \"follow\",\r\n signal: abortController.signal,\r\n });\r\n }\r\n catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${e}.`);\r\n throw e;\r\n }\r\n finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n if (!response.ok) {\r\n const errorMessage = await deserializeContent(response, \"text\");\r\n throw new HttpError(errorMessage || response.statusText, response.status);\r\n }\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n return new HttpResponse(response.status, response.statusText, payload);\r\n }\r\n getCookieString(url) {\r\n let cookies = \"\";\r\n if (Platform.isNode && this._jar) {\r\n // @ts-ignore: unused variable\r\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\nfunction deserializeContent(response, responseType) {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n return content;\r\n}\r\n//# sourceMappingURL=FetchHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\nexport class XhrHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n if (isArrayBuffer(request.content)) {\r\n xhr.setRequestHeader(\"Content-Type\", \"application/octet-stream\");\r\n }\r\n else {\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n }\r\n }\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = () => {\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = () => {\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content);\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=XhrHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nexport class DefaultHttpClient extends HttpClient {\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n constructor(logger) {\r\n super();\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this._httpClient = new FetchHttpClient(logger);\r\n }\r\n else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this._httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this._httpClient.send(request);\r\n }\r\n getCookieString(url) {\r\n return this._httpClient.getCookieString(url);\r\n }\r\n}\r\n//# sourceMappingURL=DefaultHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n/** @private */\r\nexport class DefaultReconnectPolicy {\r\n constructor(retryDelays) {\r\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n nextRetryDelayInMilliseconds(retryContext) {\r\n return this._retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n//# sourceMappingURL=DefaultReconnectPolicy.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Error thrown when an HTTP request fails. */\r\nexport class HttpError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n constructor(errorMessage, statusCode) {\r\n const trueProto = new.target.prototype;\r\n super(`${errorMessage}: Status code '${statusCode}'`);\r\n this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when a timeout elapses. */\r\nexport class TimeoutError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"A timeout occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when an action is aborted. */\r\nexport class AbortError extends Error {\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"An abort occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is unsupported by the browser. */\r\n/** @private */\r\nexport class UnsupportedTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.UnsupportedTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'UnsupportedTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is disabled by the browser. */\r\n/** @private */\r\nexport class DisabledTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.DisabledTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'DisabledTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport cannot be started. */\r\n/** @private */\r\nexport class FailedToStartTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToStartTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'FailedToStartTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the negotiation with the server failed to complete. */\r\n/** @private */\r\nexport class FailedToNegotiateWithServerError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToNegotiateWithServerError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n */\r\n constructor(message) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.errorType = 'FailedToNegotiateWithServerError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when multiple errors have occurred. */\r\n/** @private */\r\nexport class AggregateErrors extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.AggregateErrors}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {Error[]} innerErrors The collection of errors this error is aggregating.\r\n */\r\n constructor(message, innerErrors) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.innerErrors = innerErrors;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n//# sourceMappingURL=Errors.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nexport class HandshakeProtocol {\r\n // Handshake request is always JSON\r\n writeHandshakeRequest(handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n }\r\n parseHandshakeResponse(data) {\r\n let messageData;\r\n let remainingData;\r\n if (isArrayBuffer(data)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n const binaryData = new Uint8Array(data);\r\n const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, Array.prototype.slice.call(binaryData.slice(0, responseLength)));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n const textData = data;\r\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n const messages = TextMessageFormat.parse(messageData);\r\n const response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n const responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n }\r\n}\r\n//# sourceMappingURL=HandshakeProtocol.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nexport class HeaderNames {\r\n}\r\nHeaderNames.Authorization = \"Authorization\";\r\nHeaderNames.Cookie = \"Cookie\";\r\n//# sourceMappingURL=HeaderNames.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Represents an HTTP response. */\r\nexport class HttpResponse {\r\n constructor(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n}\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nexport class HttpClient {\r\n get(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n post(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n delete(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n getCookieString(url) {\r\n return \"\";\r\n }\r\n}\r\n//# sourceMappingURL=HttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AccessTokenHttpClient } from \"./AccessTokenHttpClient\";\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError, AbortError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nconst MAX_REDIRECTS = 100;\r\n/** @private */\r\nexport class HttpConnection {\r\n constructor(url, options = {}) {\r\n this._stopPromiseResolver = () => { };\r\n this.features = {};\r\n this._negotiateVersion = 1;\r\n Arg.isRequired(url, \"url\");\r\n this._logger = createLogger(options.logger);\r\n this.baseUrl = this._resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n }\r\n else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\r\n let webSocketModule = null;\r\n let eventSourceModule = null;\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n this._httpClient = new AccessTokenHttpClient(options.httpClient || new DefaultHttpClient(this._logger), options.accessTokenFactory);\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n this._connectionStarted = false;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async start(transferFormat) {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n if (this._connectionState !== \"Disconnected\" /* Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = \"Connecting\" /* Connecting */;\r\n this._startInternalPromise = this._startInternal(transferFormat);\r\n await this._startInternalPromise;\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this._logger.log(LogLevel.Error, message);\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this._stopPromise;\r\n return Promise.reject(new AbortError(message));\r\n }\r\n else if (this._connectionState !== \"Connected\" /* Connected */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this._logger.log(LogLevel.Error, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n this._connectionStarted = true;\r\n }\r\n send(data) {\r\n if (this._connectionState !== \"Connected\" /* Connected */) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n if (!this._sendQueue) {\r\n this._sendQueue = new TransportSendQueue(this.transport);\r\n }\r\n // Transport will not be null if state is connected\r\n return this._sendQueue.send(data);\r\n }\r\n async stop(error) {\r\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = \"Disconnecting\" /* Disconnecting */;\r\n this._stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this._stopPromiseResolver = resolve;\r\n });\r\n // stopInternal should never throw so just observe it.\r\n await this._stopInternal(error);\r\n await this._stopPromise;\r\n }\r\n async _stopInternal(error) {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this._stopError = error;\r\n try {\r\n await this._startInternalPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this._stopConnection();\r\n }\r\n this.transport = undefined;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n async _startInternal(transferFormat) {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this._accessTokenFactory = this._options.accessTokenFactory;\r\n this._httpClient._accessTokenFactory = this._accessTokenFactory;\r\n try {\r\n if (this._options.skipNegotiation) {\r\n if (this._options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this._startTransport(url, transferFormat);\r\n }\r\n else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n }\r\n else {\r\n let negotiateResponse = null;\r\n let redirects = 0;\r\n do {\r\n negotiateResponse = await this._getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */ || this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n throw new AbortError(\"The connection was stopped during negotiation.\");\r\n }\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this._accessTokenFactory = () => accessToken;\r\n // set the factory to undefined so the AccessTokenHttpClient won't retry with the same token, since we know it won't change until a connection restart\r\n this._httpClient._accessToken = accessToken;\r\n this._httpClient._accessTokenFactory = undefined;\r\n }\r\n redirects++;\r\n } while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\r\n }\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n if (this._connectionState === \"Connecting\" /* Connecting */) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this._connectionState = \"Connected\" /* Connected */;\r\n }\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n this.transport = undefined;\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this._stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _getNegotiationResponse(url) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const negotiateUrl = this._resolveNegotiateUrl(url);\r\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this._httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n });\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n const negotiateResponse = JSON.parse(response.content);\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n return negotiateResponse;\r\n }\r\n catch (e) {\r\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\r\n if (e instanceof HttpError) {\r\n if (e.statusCode === 404) {\r\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\r\n }\r\n }\r\n this._logger.log(LogLevel.Error, errorMessage);\r\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\r\n }\r\n }\r\n _createConnectUrl(url, connectionToken) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n async _createTransport(url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this._isITransport(requestedTransport)) {\r\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n const transportExceptions = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed:`);\r\n transportExceptions.push(transportOrError);\r\n }\r\n else if (this._isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this._getNegotiationResponse(url);\r\n }\r\n catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n }\r\n catch (ex) {\r\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\r\n if (this._connectionState !== \"Connecting\" /* Connecting */) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this._logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n }\r\n }\r\n }\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n _constructTransport(transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this._options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent, this._options.WebSocket, this._options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this._options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this._httpClient, this._httpClient._accessToken, this._logger, this._options);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this._httpClient, this._logger, this._options);\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n _startTransport(url, transferFormat) {\r\n this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = (e) => this._stopConnection(e);\r\n return this.transport.connect(url, transferFormat);\r\n }\r\n _resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat) {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n }\r\n else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this._options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this._options.EventSource)) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n return this._constructTransport(transport);\r\n }\r\n catch (ex) {\r\n return ex;\r\n }\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\r\n }\r\n }\r\n }\r\n _isITransport(transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n _stopConnection(error) {\r\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this._stopError || error;\r\n this._stopError = undefined;\r\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n if (this._connectionState === \"Connecting\" /* Connecting */) {\r\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this._stopPromiseResolver();\r\n }\r\n if (error) {\r\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n if (this._sendQueue) {\r\n this._sendQueue.stop().catch((e) => {\r\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this._sendQueue = undefined;\r\n }\r\n this.connectionId = undefined;\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n if (this._connectionStarted) {\r\n this._connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n _resolveUrl(url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (!Platform.isBrowser) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n _resolveNegotiateUrl(url) {\r\n const index = url.indexOf(\"?\");\r\n let negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\r\n negotiateUrl += index === -1 ? \"?\" : \"&\";\r\n negotiateUrl += \"negotiateVersion=\" + this._negotiateVersion;\r\n }\r\n return negotiateUrl;\r\n }\r\n}\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n/** @private */\r\nexport class TransportSendQueue {\r\n constructor(_transport) {\r\n this._transport = _transport;\r\n this._buffer = [];\r\n this._executing = true;\r\n this._sendBufferedData = new PromiseSource();\r\n this._transportResult = new PromiseSource();\r\n this._sendLoopPromise = this._sendLoop();\r\n }\r\n send(data) {\r\n this._bufferData(data);\r\n if (!this._transportResult) {\r\n this._transportResult = new PromiseSource();\r\n }\r\n return this._transportResult.promise;\r\n }\r\n stop() {\r\n this._executing = false;\r\n this._sendBufferedData.resolve();\r\n return this._sendLoopPromise;\r\n }\r\n _bufferData(data) {\r\n if (this._buffer.length && typeof (this._buffer[0]) !== typeof (data)) {\r\n throw new Error(`Expected data to be of type ${typeof (this._buffer)} but was of type ${typeof (data)}`);\r\n }\r\n this._buffer.push(data);\r\n this._sendBufferedData.resolve();\r\n }\r\n async _sendLoop() {\r\n while (true) {\r\n await this._sendBufferedData.promise;\r\n if (!this._executing) {\r\n if (this._transportResult) {\r\n this._transportResult.reject(\"Connection stopped.\");\r\n }\r\n break;\r\n }\r\n this._sendBufferedData = new PromiseSource();\r\n const transportResult = this._transportResult;\r\n this._transportResult = undefined;\r\n const data = typeof (this._buffer[0]) === \"string\" ?\r\n this._buffer.join(\"\") :\r\n TransportSendQueue._concatBuffers(this._buffer);\r\n this._buffer.length = 0;\r\n try {\r\n await this._transport.send(data);\r\n transportResult.resolve();\r\n }\r\n catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n static _concatBuffers(arrayBuffers) {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n return result.buffer;\r\n }\r\n}\r\nclass PromiseSource {\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\r\n }\r\n resolve() {\r\n this._resolver();\r\n }\r\n reject(reason) {\r\n this._rejecter(reason);\r\n }\r\n}\r\n//# sourceMappingURL=HttpConnection.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { AbortError } from \"./Errors\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg, getErrorString, Platform } from \"./Utils\";\r\nconst DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nconst DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport var HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[\"Disconnected\"] = \"Disconnected\";\r\n /** The hub connection is connecting. */\r\n HubConnectionState[\"Connecting\"] = \"Connecting\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[\"Connected\"] = \"Connected\";\r\n /** The hub connection is disconnecting. */\r\n HubConnectionState[\"Disconnecting\"] = \"Disconnecting\";\r\n /** The hub connection is reconnecting. */\r\n HubConnectionState[\"Reconnecting\"] = \"Reconnecting\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nexport class HubConnection {\r\n constructor(connection, logger, protocol, reconnectPolicy) {\r\n this._nextKeepAlive = 0;\r\n this._freezeEventListener = () => {\r\n this._logger.log(LogLevel.Warning, \"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://docs.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\");\r\n };\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n this._logger = logger;\r\n this._protocol = protocol;\r\n this.connection = connection;\r\n this._reconnectPolicy = reconnectPolicy;\r\n this._handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = (data) => this._processIncomingData(data);\r\n this.connection.onclose = (error) => this._connectionClosed(error);\r\n this._callbacks = {};\r\n this._methods = {};\r\n this._closedCallbacks = [];\r\n this._reconnectingCallbacks = [];\r\n this._reconnectedCallbacks = [];\r\n this._invocationId = 0;\r\n this._receivedHandshakeResponse = false;\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n this._cachedPingMessage = this._protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n static create(connection, logger, protocol, reconnectPolicy) {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\r\n }\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get state() {\r\n return this._connectionState;\r\n }\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get connectionId() {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n }\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get baseUrl() {\r\n return this.connection.baseUrl || \"\";\r\n }\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set baseUrl(url) {\r\n if (this._connectionState !== HubConnectionState.Disconnected && this._connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n this.connection.baseUrl = url;\r\n }\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n start() {\r\n this._startPromise = this._startWithStateTransitions();\r\n return this._startPromise;\r\n }\r\n async _startWithStateTransitions() {\r\n if (this._connectionState !== HubConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = HubConnectionState.Connecting;\r\n this._logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n try {\r\n await this._startInternal();\r\n if (Platform.isBrowser) {\r\n // Log when the browser freezes the tab so users know why their connection unexpectedly stopped working\r\n window.document.addEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n this._connectionState = HubConnectionState.Connected;\r\n this._connectionStarted = true;\r\n this._logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n }\r\n catch (e) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _startInternal() {\r\n this._stopDuringStartError = undefined;\r\n this._receivedHandshakeResponse = false;\r\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\r\n const handshakePromise = new Promise((resolve, reject) => {\r\n this._handshakeResolver = resolve;\r\n this._handshakeRejecter = reject;\r\n });\r\n await this.connection.start(this._protocol.transferFormat);\r\n try {\r\n const handshakeRequest = {\r\n protocol: this._protocol.name,\r\n version: this._protocol.version,\r\n };\r\n this._logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(handshakeRequest));\r\n this._logger.log(LogLevel.Information, `Using HubProtocol '${this._protocol.name}'.`);\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this._cleanupTimeout();\r\n this._resetTimeoutPeriod();\r\n this._resetKeepAliveInterval();\r\n await handshakePromise;\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this._stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\r\n throw this._stopDuringStartError;\r\n }\r\n if (!this.connection.features.inherentKeepAlive) {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n await this.connection.stop(e);\r\n throw e;\r\n }\r\n }\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n async stop() {\r\n // Capture the start promise before the connection might be restarted in an onclose callback.\r\n const startPromise = this._startPromise;\r\n this._stopPromise = this._stopInternal();\r\n await this._stopPromise;\r\n try {\r\n // Awaiting undefined continues immediately\r\n await startPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n }\r\n _stopInternal(error) {\r\n if (this._connectionState === HubConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = HubConnectionState.Disconnecting;\r\n this._logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n if (this._reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this._logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n clearTimeout(this._reconnectDelayHandle);\r\n this._reconnectDelayHandle = undefined;\r\n this._completeClose();\r\n return Promise.resolve();\r\n }\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n this._stopDuringStartError = error || new AbortError(\"The connection was stopped before the hub handshake could complete.\");\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n }\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n stream(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createStreamInvocation(methodName, args, streamIds);\r\n // eslint-disable-next-line prefer-const\r\n let promiseQueue;\r\n const subject = new Subject();\r\n subject.cancelCallback = () => {\r\n const cancelInvocation = this._createCancelInvocation(invocationDescriptor.invocationId);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(() => {\r\n return this._sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n subject.error(e);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n return subject;\r\n }\r\n _sendMessage(message) {\r\n this._resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n }\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n _sendWithProtocol(message) {\r\n return this._sendMessage(this._protocol.writeMessage(message));\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n send(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const sendPromise = this._sendWithProtocol(this._createInvocation(methodName, args, true, streamIds));\r\n this._launchStreams(streams, sendPromise);\r\n return sendPromise;\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n invoke(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createInvocation(methodName, args, false, streamIds);\r\n const p = new Promise((resolve, reject) => {\r\n // invocationId will always have a value for a non-blocking invocation\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\r\n }\r\n }\r\n };\r\n const promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n });\r\n return p;\r\n }\r\n on(methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this._methods[methodName]) {\r\n this._methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this._methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this._methods[methodName].push(newMethod);\r\n }\r\n off(methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n const handlers = this._methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n const removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n onclose(callback) {\r\n if (callback) {\r\n this._closedCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n onreconnecting(callback) {\r\n if (callback) {\r\n this._reconnectingCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n onreconnected(callback) {\r\n if (callback) {\r\n this._reconnectedCallbacks.push(callback);\r\n }\r\n }\r\n _processIncomingData(data) {\r\n this._cleanupTimeout();\r\n if (!this._receivedHandshakeResponse) {\r\n data = this._processHandshakeResponse(data);\r\n this._receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n const messages = this._protocol.parseMessages(data, this._logger);\r\n for (const message of messages) {\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion: {\r\n const callback = this._callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this._callbacks[message.invocationId];\r\n }\r\n try {\r\n callback(message);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream callback threw error: ${getErrorString(e)}`);\r\n }\r\n }\r\n break;\r\n }\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close: {\r\n this._logger.log(LogLevel.Information, \"Close message received from server.\");\r\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(error);\r\n }\r\n else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this._stopPromise = this._stopInternal(error);\r\n }\r\n break;\r\n }\r\n default:\r\n this._logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\r\n break;\r\n }\r\n }\r\n }\r\n this._resetTimeoutPeriod();\r\n }\r\n _processHandshakeResponse(data) {\r\n let responseMessage;\r\n let remainingData;\r\n try {\r\n [remainingData, responseMessage] = this._handshakeProtocol.parseHandshakeResponse(data);\r\n }\r\n catch (e) {\r\n const message = \"Error parsing handshake response: \" + e;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n const message = \"Server returned handshake error: \" + responseMessage.error;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this._handshakeResolver();\r\n return remainingData;\r\n }\r\n _resetKeepAliveInterval() {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this._nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n this._cleanupPingTimer();\r\n }\r\n _resetTimeoutPeriod() {\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this._timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\r\n // Set keepAlive timer if there isn't one\r\n if (this._pingServerHandle === undefined) {\r\n let nextPing = this._nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this._pingServerHandle = setTimeout(async () => {\r\n if (this._connectionState === HubConnectionState.Connected) {\r\n try {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n catch {\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this._cleanupPingTimer();\r\n }\r\n }\r\n }, nextPing);\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n serverTimeout() {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n }\r\n async _invokeClientMethod(invocationMessage) {\r\n const methodName = invocationMessage.target.toLowerCase();\r\n const methods = this._methods[methodName];\r\n if (!methods) {\r\n this._logger.log(LogLevel.Warning, `No client method with the name '${methodName}' found.`);\r\n // No handlers provided by client but the server is expecting a response still, so we send an error\r\n if (invocationMessage.invocationId) {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n await this._sendWithProtocol(this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null));\r\n }\r\n return;\r\n }\r\n // Avoid issues with handlers removing themselves thus modifying the list while iterating through it\r\n const methodsCopy = methods.slice();\r\n // Server expects a response\r\n const expectsResponse = invocationMessage.invocationId ? true : false;\r\n // We preserve the last result or exception but still call all handlers\r\n let res;\r\n let exception;\r\n let completionMessage;\r\n for (const m of methodsCopy) {\r\n try {\r\n const prevRes = res;\r\n res = await m.apply(this, invocationMessage.arguments);\r\n if (expectsResponse && res && prevRes) {\r\n this._logger.log(LogLevel.Error, `Multiple results provided for '${methodName}'. Sending error to server.`);\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `Client provided multiple results.`, null);\r\n }\r\n // Ignore exception if we got a result after, the exception will be logged\r\n exception = undefined;\r\n }\r\n catch (e) {\r\n exception = e;\r\n this._logger.log(LogLevel.Error, `A callback for the method '${methodName}' threw error '${e}'.`);\r\n }\r\n }\r\n if (completionMessage) {\r\n await this._sendWithProtocol(completionMessage);\r\n }\r\n else if (expectsResponse) {\r\n // If there is an exception that means either no result was given or a handler after a result threw\r\n if (exception) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `${exception}`, null);\r\n }\r\n else if (res !== undefined) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, null, res);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n // Client didn't provide a result or throw from a handler, server expects a response so we send an error\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null);\r\n }\r\n await this._sendWithProtocol(completionMessage);\r\n }\r\n else {\r\n if (res) {\r\n this._logger.log(LogLevel.Error, `Result given for '${methodName}' method but server is not expecting a result.`);\r\n }\r\n }\r\n }\r\n _connectionClosed(error) {\r\n this._logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this._connectionState}.`);\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this._stopDuringStartError = this._stopDuringStartError || error || new AbortError(\"The underlying connection was closed before the hub handshake could complete.\");\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this._handshakeResolver) {\r\n this._handshakeResolver();\r\n }\r\n this._cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected && this._reconnectPolicy) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._reconnect(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected) {\r\n this._completeClose(error);\r\n }\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n }\r\n _completeClose(error) {\r\n if (this._connectionStarted) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n if (Platform.isBrowser) {\r\n window.document.removeEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n try {\r\n this._closedCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n async _reconnect(error) {\r\n const reconnectStartTime = Date.now();\r\n let previousReconnectAttempts = 0;\r\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n let nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n if (nextRetryDelay === null) {\r\n this._logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this._completeClose(error);\r\n return;\r\n }\r\n this._connectionState = HubConnectionState.Reconnecting;\r\n if (error) {\r\n this._logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n if (this._reconnectingCallbacks.length !== 0) {\r\n try {\r\n this._reconnectingCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return;\r\n }\r\n }\r\n while (nextRetryDelay !== null) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\r\n await new Promise((resolve) => {\r\n this._reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);\r\n });\r\n this._reconnectDelayHandle = undefined;\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return;\r\n }\r\n try {\r\n await this._startInternal();\r\n this._connectionState = HubConnectionState.Connected;\r\n this._logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n if (this._reconnectedCallbacks.length !== 0) {\r\n try {\r\n this._reconnectedCallbacks.forEach((c) => c.apply(this, [this.connection.connectionId]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\r\n }\r\n }\r\n return;\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, `Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose();\r\n }\r\n return;\r\n }\r\n retryError = e instanceof Error ? e : new Error(e.toString());\r\n nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n }\r\n }\r\n this._logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\r\n this._completeClose();\r\n }\r\n _getNextRetryDelay(previousRetryCount, elapsedMilliseconds, retryReason) {\r\n try {\r\n return this._reconnectPolicy.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds,\r\n previousRetryCount,\r\n retryReason,\r\n });\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\r\n return null;\r\n }\r\n }\r\n _cancelCallbacksWithError(error) {\r\n const callbacks = this._callbacks;\r\n this._callbacks = {};\r\n Object.keys(callbacks)\r\n .forEach((key) => {\r\n const callback = callbacks[key];\r\n try {\r\n callback(null, error);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream 'error' callback called with '${error}' threw error: ${getErrorString(e)}`);\r\n }\r\n });\r\n }\r\n _cleanupPingTimer() {\r\n if (this._pingServerHandle) {\r\n clearTimeout(this._pingServerHandle);\r\n this._pingServerHandle = undefined;\r\n }\r\n }\r\n _cleanupTimeout() {\r\n if (this._timeoutHandle) {\r\n clearTimeout(this._timeoutHandle);\r\n }\r\n }\r\n _createInvocation(methodName, args, nonblocking, streamIds) {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n else {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n }\r\n _launchStreams(streams, promiseQueue) {\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // eslint-disable-next-line guard-for-in\r\n for (const streamId in streams) {\r\n streams[streamId].subscribe({\r\n complete: () => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId)));\r\n },\r\n error: (err) => {\r\n let message;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n }\r\n else if (err && err.toString) {\r\n message = err.toString();\r\n }\r\n else {\r\n message = \"Unknown error\";\r\n }\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId, message)));\r\n },\r\n next: (item) => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createStreamItemMessage(streamId, item)));\r\n },\r\n });\r\n }\r\n }\r\n _replaceStreamingParams(args) {\r\n const streams = [];\r\n const streamIds = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const argument = args[i];\r\n if (this._isObservable(argument)) {\r\n const streamId = this._invocationId;\r\n this._invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n return [streams, streamIds];\r\n }\r\n _isObservable(arg) {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n }\r\n _createStreamInvocation(methodName, args, streamIds) {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n }\r\n _createCancelInvocation(id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n }\r\n _createStreamItemMessage(id, item) {\r\n return {\r\n invocationId: id,\r\n item,\r\n type: MessageType.StreamItem,\r\n };\r\n }\r\n _createCompletionMessage(id, error, result) {\r\n if (error) {\r\n return {\r\n error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n return {\r\n invocationId: id,\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=HubConnection.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\nconst LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\nfunction parseLogLevel(name) {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n }\r\n else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nexport class HubConnectionBuilder {\r\n configureLogging(logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n }\r\n withUrl(url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n }\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n withHubProtocol(protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n withAutomaticReconnect(retryDelaysOrReconnectPolicy) {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n }\r\n else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n }\r\n else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n return this;\r\n }\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n build() {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy);\r\n }\r\n}\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n//# sourceMappingURL=HubConnectionBuilder.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Defines the type of a Hub Message. */\r\nexport var MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n})(MessageType || (MessageType = {}));\r\n//# sourceMappingURL=IHubProtocol.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n//# sourceMappingURL=ILogger.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n//# sourceMappingURL=ITransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nconst JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nexport class JsonHubProtocol {\r\n constructor() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 1;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this._isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this._isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this._isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n }\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n writeMessage(message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n _isInvocationMessage(message) {\r\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n _isStreamItemMessage(message) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n _isCompletionMessage(message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n _assertNotEmptyString(value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=JsonHubProtocol.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nexport class NullLogger {\r\n constructor() { }\r\n /** @inheritDoc */\r\n // eslint-disable-next-line\r\n log(_logLevel, _message) {\r\n }\r\n}\r\n/** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\nNullLogger.instance = new NullLogger();\r\n//# sourceMappingURL=Loggers.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nexport class LongPollingTransport {\r\n constructor(httpClient, logger, options) {\r\n this._httpClient = httpClient;\r\n this._logger = logger;\r\n this._pollAbort = new AbortController();\r\n this._options = options;\r\n this._running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get pollAborted() {\r\n return this._pollAbort.aborted;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._url = url;\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this._options.headers };\r\n const pollOptions = {\r\n abortSignal: this._pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n this._running = true;\r\n }\r\n this._receiving = this._poll(this._url, pollOptions);\r\n }\r\n async _poll(url, pollOptions) {\r\n try {\r\n while (this._running) {\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode === 204) {\r\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this._running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Unexpected status code\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n if (!this._running) {\r\n // Log but disregard errors that occur after stopping\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\r\n }\r\n else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this._closeError = e;\r\n this._running = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this._raiseOnClose();\r\n }\r\n }\r\n }\r\n async send(data) {\r\n if (!this._running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url, data, this._options);\r\n }\r\n async stop() {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this._running = false;\r\n this._pollAbort.abort();\r\n try {\r\n await this._receiving;\r\n // Send DELETE to clean up long polling on the server\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const deleteOptions = {\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n await this._httpClient.delete(this._url, deleteOptions);\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this._raiseOnClose();\r\n }\r\n }\r\n _raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this._closeError) {\r\n logMessage += \" Error: \" + this._closeError;\r\n }\r\n this._logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this._closeError);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=LongPollingTransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\n/** @private */\r\nexport class ServerSentEventsTransport {\r\n constructor(httpClient, accessToken, logger, options) {\r\n this._httpClient = httpClient;\r\n this._accessToken = accessToken;\r\n this._logger = logger;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this._url is only for send and we set the auth header instead of the query string for send\r\n this._url = url;\r\n if (this._accessToken) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(this._accessToken)}`;\r\n }\r\n return new Promise((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n let eventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this._httpClient.getCookieString(url);\r\n const headers = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials, headers: { ...headers, ...this._options.headers } });\r\n }\r\n try {\r\n eventSource.onmessage = (e) => {\r\n if (this.onreceive) {\r\n try {\r\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent)}.`);\r\n this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n // @ts-ignore: not using event on purpose\r\n eventSource.onerror = (e) => {\r\n // EventSource doesn't give any useful information about server side closes.\r\n if (opened) {\r\n this._close();\r\n }\r\n else {\r\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\"\r\n + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\"));\r\n }\r\n };\r\n eventSource.onopen = () => {\r\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\r\n this._eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n async send(data) {\r\n if (!this._eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url, data, this._options);\r\n }\r\n stop() {\r\n this._close();\r\n return Promise.resolve();\r\n }\r\n _close(e) {\r\n if (this._eventSource) {\r\n this._eventSource.close();\r\n this._eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=ServerSentEventsTransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { SubjectSubscription } from \"./Utils\";\r\n/** Stream implementation to stream items to the server. */\r\nexport class Subject {\r\n constructor() {\r\n this.observers = [];\r\n }\r\n next(item) {\r\n for (const observer of this.observers) {\r\n observer.next(item);\r\n }\r\n }\r\n error(err) {\r\n for (const observer of this.observers) {\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n complete() {\r\n for (const observer of this.observers) {\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n }\r\n subscribe(observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n }\r\n}\r\n//# sourceMappingURL=Subject.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Not exported from index\r\n/** @private */\r\nexport class TextMessageFormat {\r\n static write(output) {\r\n return `${output}${TextMessageFormat.RecordSeparator}`;\r\n }\r\n static parse(input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n const messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n }\r\n}\r\nTextMessageFormat.RecordSeparatorCode = 0x1e;\r\nTextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n//# sourceMappingURL=TextMessageFormat.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nexport const VERSION = \"7.0.14\";\r\n/** @private */\r\nexport class Arg {\r\n static isRequired(val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(`The '${name}' argument is required.`);\r\n }\r\n }\r\n static isNotEmpty(val, name) {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(`The '${name}' argument should not be empty.`);\r\n }\r\n }\r\n static isIn(val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(`Unknown ${name} value: ${val}.`);\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class Platform {\r\n // react-native has a window but no document so we should check both\r\n static get isBrowser() {\r\n return typeof window === \"object\" && typeof window.document === \"object\";\r\n }\r\n // WebWorkers don't have a window object so the isBrowser check would fail\r\n static get isWebWorker() {\r\n return typeof self === \"object\" && \"importScripts\" in self;\r\n }\r\n // react-native has a window but no document\r\n static get isReactNative() {\r\n return typeof window === \"object\" && typeof window.document === \"undefined\";\r\n }\r\n // Node apps shouldn't have a window object, but WebWorkers don't either\r\n // so we need to check for both WebWorker and window\r\n static get isNode() {\r\n return !this.isBrowser && !this.isWebWorker && !this.isReactNative;\r\n }\r\n}\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n let detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = `Binary data of length ${data.byteLength}`;\r\n if (includeContent) {\r\n detail += `. Content: '${formatArrayBuffer(data)}'`;\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = `String data of length ${data.length}`;\r\n if (includeContent) {\r\n detail += `. Content: '${data}'`;\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n const view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n let str = \"\";\r\n view.forEach((num) => {\r\n const pad = num < 16 ? \"0\" : \"\";\r\n str += `0x${pad}${num.toString(16)} `;\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nexport async function sendMessage(logger, transportName, httpClient, url, content, options) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, options.logMessageContent)}.`);\r\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n const response = await httpClient.post(url, {\r\n content,\r\n headers: { ...headers, ...options.headers },\r\n responseType,\r\n timeout: options.timeout,\r\n withCredentials: options.withCredentials,\r\n });\r\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log !== undefined) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nexport class SubjectSubscription {\r\n constructor(subject, observer) {\r\n this._subject = subject;\r\n this._observer = observer;\r\n }\r\n dispose() {\r\n const index = this._subject.observers.indexOf(this._observer);\r\n if (index > -1) {\r\n this._subject.observers.splice(index, 1);\r\n }\r\n if (this._subject.observers.length === 0 && this._subject.cancelCallback) {\r\n this._subject.cancelCallback().catch((_) => { });\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class ConsoleLogger {\r\n constructor(minimumLogLevel) {\r\n this._minLevel = minimumLogLevel;\r\n this.out = console;\r\n }\r\n log(logLevel, message) {\r\n if (logLevel >= this._minLevel) {\r\n const msg = `[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`;\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.out.error(msg);\r\n break;\r\n case LogLevel.Warning:\r\n this.out.warn(msg);\r\n break;\r\n case LogLevel.Information:\r\n this.out.info(msg);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.out.log(msg);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport function getUserAgentHeader() {\r\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion())];\r\n}\r\n/** @private */\r\nexport function constructUserAgent(version, os, runtime, runtimeVersion) {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n let userAgent = \"Microsoft SignalR/\";\r\n const majorAndMinor = version.split(\".\");\r\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\r\n userAgent += ` (${version}; `;\r\n if (os && os !== \"\") {\r\n userAgent += `${os}; `;\r\n }\r\n else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n userAgent += `${runtime}`;\r\n if (runtimeVersion) {\r\n userAgent += `; ${runtimeVersion}`;\r\n }\r\n else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getOsName() {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getRuntimeVersion() {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\nfunction getRuntime() {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n }\r\n else {\r\n return \"Browser\";\r\n }\r\n}\r\n/** @private */\r\nexport function getErrorString(e) {\r\n if (e.stack) {\r\n return e.stack;\r\n }\r\n else if (e.message) {\r\n return e.message;\r\n }\r\n return `${e}`;\r\n}\r\n/** @private */\r\nexport function getGlobalThis() {\r\n // globalThis is semi-new and not available in Node until v12\r\n if (typeof globalThis !== \"undefined\") {\r\n return globalThis;\r\n }\r\n if (typeof self !== \"undefined\") {\r\n return self;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n return window;\r\n }\r\n if (typeof global !== \"undefined\") {\r\n return global;\r\n }\r\n throw new Error(\"could not find global\");\r\n}\r\n//# sourceMappingURL=Utils.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n/** @private */\r\nexport class WebSocketTransport {\r\n constructor(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {\r\n this._logger = logger;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logMessageContent = logMessageContent;\r\n this._webSocketConstructor = webSocketConstructor;\r\n this._httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this._headers = headers;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n let token;\r\n if (this._accessTokenFactory) {\r\n token = await this._accessTokenFactory();\r\n }\r\n return new Promise((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket;\r\n const cookies = this._httpClient.getCookieString(url);\r\n let opened = false;\r\n if (Platform.isNode || Platform.isReactNative) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n if (token) {\r\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n }\r\n if (cookies) {\r\n headers[HeaderNames.Cookie] = cookies;\r\n }\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this._webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this._headers },\r\n });\r\n }\r\n else {\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this._webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n webSocket.onopen = (_event) => {\r\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this._webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n webSocket.onerror = (event) => {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"There was an error with the transport\";\r\n }\r\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\r\n };\r\n webSocket.onmessage = (message) => {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n webSocket.onclose = (event) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this._close(event);\r\n }\r\n else {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"WebSocket failed to connect. The connection could not be found on the server,\"\r\n + \" either the endpoint may not be a SignalR endpoint,\"\r\n + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\";\r\n }\r\n reject(new Error(error));\r\n }\r\n };\r\n });\r\n }\r\n send(data) {\r\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\r\n this._webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n stop() {\r\n if (this._webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this._close(undefined);\r\n }\r\n return Promise.resolve();\r\n }\r\n _close(event) {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this._webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this._webSocket.onclose = () => { };\r\n this._webSocket.onmessage = () => { };\r\n this._webSocket.onerror = () => { };\r\n this._webSocket.close();\r\n this._webSocket = undefined;\r\n }\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\r\n }\r\n else if (event instanceof Error) {\r\n this.onclose(event);\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n _isCloseEvent(event) {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n//# sourceMappingURL=WebSocketTransport.js.map","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 }\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 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 * 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 for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[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.1';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' 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=MjEuMQ==\";\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.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[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.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n 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.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.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 this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\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.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (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 (this.element && this.element.classList.length > 0 && this.element.classList.value.indexOf(\"e-dialog\") === -1 && document.scrollingElement) {\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.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n 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) {\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","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.1';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' 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=MjEuMQ==\";\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","/**\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 { 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 (!this.element.classList.contains(\"e-dialog\") && !this.element.classList.contains(\"e-card\") && document.scrollingElement) {\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) ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content': {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || 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","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 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) {\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","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.1';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' 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=MjEuMQ==\";\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","/**\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 { 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 (!this.element.classList.contains(\"e-dialog\") && !this.element.classList.contains(\"e-card\") && document.scrollingElement) {\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 __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveRight':\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveUp':\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n break;\n case 'moveDown':\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n break;\n case 'select':\n if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n this.l10.setLocale(this.locale);\n this.updateFooter();\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n this.updateInput(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n case 'tab':\n this.hide(e);\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n {\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start === 0 && end === length_1) || (end !== length_1 && e.action === 'tab') || (start !== 0 && e.action === 'shiftTab')) {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n this.hide(e);\n break;\n }\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (+this.value !== +this.previousDate)) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n date = this.globalize.parseDate(this.inputElement.value.toLocaleUpperCase(), dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n open: function () {\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper)) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else if (!isNullOrUndefined(this.inputWrapper)) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_datepopup' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n this.popupObject.refreshPosition(this.inputElement);\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, ChildProperty } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @class */ (function (_super) {\n __extends(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\nexport { TimeMaskPlaceholder };\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n };\n // element creation\n TimePicker.prototype.render = function () {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n this.bindEvents();\n this.validateDisable();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n this.hide();\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.openPopupEventArgs.appendTo.appendChild(this.popupWrapper);\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) ||\n (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: event\n });\n }\n if (!this.enableMask || this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart === 0 && this.inputElement.selectionEnd === this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action === 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action === 'shiftTab') || (event.action === 'left' || event.action === 'right')) {\n event.preventDefault();\n }\n this.notify('keyDownHandler', { module: 'MaskedDateTime',\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime', navigated: true\n });\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper)\n && this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n this.selectInputText();\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.updatePlaceHolder();\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString && !this.enableMask) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","/* eslint-disable */\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * array literal codes\n */\nvar ARR_LITERAL_CODES = new Int16Array(286);\nvar ARR_LITERAL_LENGTHS = new Uint8Array(286);\nvar ARR_DISTANCE_CODES = new Int16Array(30);\nvar ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nvar CompressedStreamWriter = /** @class */ (function () {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n function CompressedStreamWriter(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n Object.defineProperty(CompressedStreamWriter.prototype, \"compressedData\", {\n /**\n * get compressed data\n */\n get: function () {\n return this.stream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressedStreamWriter.prototype, \"getCompressedString\", {\n get: function () {\n var compressedString = '';\n if (this.stream !== undefined) {\n for (var i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n CompressedStreamWriter.prototype.write = function (data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n var end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n var encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n };\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n CompressedStreamWriter.prototype.writeZLibHeader = function () {\n /* Initialize header.*/\n var headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n };\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n CompressedStreamWriter.prototype.pendingBufferWriteShortBytes = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n };\n CompressedStreamWriter.prototype.compressData = function (finish) {\n var success;\n do {\n this.fillWindow();\n var canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n };\n CompressedStreamWriter.prototype.compressSlow = function (flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n var prevMatch = this.matchStart;\n var prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n };\n CompressedStreamWriter.prototype.discardMatch = function () {\n var hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n };\n CompressedStreamWriter.prototype.matchPreviousAvailable = function () {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n };\n CompressedStreamWriter.prototype.matchPreviousBest = function (prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n };\n CompressedStreamWriter.prototype.lookAheadCompleted = function (finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n };\n CompressedStreamWriter.prototype.huffmanIsFull = function (finish) {\n var len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n var lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n };\n CompressedStreamWriter.prototype.fillWindow = function () {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n var more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n };\n CompressedStreamWriter.prototype.slideWindow = function () {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (var i = 0; i < this.hashSize; ++i) {\n var m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (var i = 0; i < this.windowSize; i++) {\n var m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n };\n CompressedStreamWriter.prototype.insertString = function () {\n var match;\n var hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n };\n CompressedStreamWriter.prototype.findLongestMatch = function (curMatch) {\n var chainLen = 4096;\n var niceLen = 258;\n var scan = this.stringStart;\n var match;\n var bestEnd = this.stringStart + this.matchLength;\n var bestLength = Math.max(this.matchLength, 3 - 1);\n var limit = Math.max(this.stringStart - this.maxDist, 0);\n var stringEnd = this.stringStart + 258 - 1;\n var scanEnd1 = this.dataWindow[bestEnd - 1];\n var scanEnd = this.dataWindow[bestEnd];\n var data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n };\n CompressedStreamWriter.prototype.updateHash = function () {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n };\n CompressedStreamWriter.prototype.huffmanTallyLit = function (literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanTallyDist = function (dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n var lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n var dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanFlushBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n var blTreeCodes = 4;\n for (var i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n var opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n var static_len = this.extraBits;\n for (var i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (var i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n };\n CompressedStreamWriter.prototype.huffmanFlushStoredBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n };\n CompressedStreamWriter.prototype.huffmanLengthCode = function (len) {\n if (len === 255) {\n return 285;\n }\n var code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n };\n CompressedStreamWriter.prototype.huffmanDistanceCode = function (distance) {\n var code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n };\n CompressedStreamWriter.prototype.huffmanSendAllTrees = function (blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (var rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n };\n CompressedStreamWriter.prototype.huffmanReset = function () {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n };\n CompressedStreamWriter.prototype.huffmanCompressBlock = function () {\n for (var i = 0; i < this.bufferPosition; i++) {\n var literalLen = this.arrLiterals[i] & 255;\n var dist = this.arrDistances[i];\n if (dist-- !== 0) {\n var lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n var bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n var dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n };\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n CompressedStreamWriter.prototype.pendingBufferWriteBits = function (b, count) {\n var uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n };\n CompressedStreamWriter.prototype.pendingBufferFlush = function (isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n var array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n };\n CompressedStreamWriter.prototype.pendingBufferFlushBits = function () {\n var result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteByteBlock = function (data, offset, length) {\n var array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteShort = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n };\n CompressedStreamWriter.prototype.pendingBufferAlignToByte = function () {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n };\n /**\n * Huffman Tree literal calculation\n * @private\n */\n CompressedStreamWriter.initHuffmanTree = function () {\n var i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n };\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n CompressedStreamWriter.prototype.close = function () {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n CompressedStreamWriter.prototype.destroy = function () {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n };\n CompressedStreamWriter.isHuffmanTreeInitiated = false;\n return CompressedStreamWriter;\n}());\nexport { CompressedStreamWriter };\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @class */ (function () {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n function CompressorHuffmanTree(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n Object.defineProperty(CompressorHuffmanTree.prototype, \"treeLength\", {\n get: function () {\n return this.codeCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeLengths\", {\n get: function () {\n return this.codeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeFrequencies\", {\n get: function () {\n return this.codeFrequency;\n },\n enumerable: true,\n configurable: true\n });\n CompressorHuffmanTree.prototype.setStaticCodes = function (codes, lengths) {\n var temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n var lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n };\n /**\n * reset all code data in tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.reset = function () {\n for (var i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n };\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeCodeToStream = function (code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n };\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildCodes = function () {\n var nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n var code = 0;\n for (var bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (var i = 0; i < this.codeCount; i++) {\n var bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n };\n CompressorHuffmanTree.bitReverse = function (value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n };\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n CompressorHuffmanTree.prototype.getEncodedLength = function () {\n var len = 0;\n for (var i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n };\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.calculateBLFreq = function (blTree) {\n var maxCount;\n var minCount;\n var count;\n var curLen = -1;\n var i = 0;\n while (i < this.codeCount) {\n count = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n };\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeTree = function (blTree) {\n var maxRepeatCount;\n var minRepeatCount;\n var currentRepeatCount;\n var currentCodeLength = -1;\n var i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n };\n /**\n * Build huffman tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildTree = function () {\n var codesCount = this.codeFrequency.length;\n var arrTree = new Int32Array(codesCount);\n var treeLength = 0;\n var maxCount = 0;\n for (var n = 0; n < codesCount; n++) {\n var freq = this.codeFrequency[n];\n if (freq !== 0) {\n var pos = treeLength++;\n var pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n var leafsCount = treeLength;\n var nodesCount = leafsCount;\n var child = new Int32Array(4 * treeLength - 2);\n var values = new Int32Array(2 * treeLength - 1);\n for (var i = 0; i < treeLength; i++) {\n var node = arrTree[i];\n var iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n };\n CompressorHuffmanTree.prototype.constructHuffmanTree = function (arrTree, treeLength, values, nodesCount, child) {\n do {\n var first = arrTree[0];\n var last = arrTree[--treeLength];\n var lastVal = values[last];\n var pPos = 0;\n var path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n var second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n var minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n };\n CompressorHuffmanTree.prototype.buildLength = function (child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n var numNodes = Math.floor(child.length / 2);\n var numLeafs = Math.floor((numNodes + 1) / 2);\n var overflow = 0;\n for (var i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n var iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n };\n CompressorHuffmanTree.prototype.recreateTree = function (child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n var nodePtr = 2 * numLeafs;\n for (var bits = this.maxLength; bits !== 0; bits--) {\n var n = this.lengthCount[bits - 1];\n while (n > 0) {\n var childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n };\n CompressorHuffmanTree.prototype.calculateOptimalCodeLength = function (child, overflow, numNodes) {\n var lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (var i = numNodes - 1; i >= 0; i--) {\n var childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n var bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n var bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n };\n CompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n CompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return CompressorHuffmanTree;\n}());\nexport { CompressorHuffmanTree };\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n ChecksumCalculator.checksumUpdate = function (checksum, buffer, offset, length) {\n var uint = new Uint32Array(1);\n uint[0] = checksum;\n var checksum_uint = uint[0];\n var s1 = uint[0] = checksum_uint & 65535;\n var s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n var steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n };\n ChecksumCalculator.checkSumBitOffset = 16;\n ChecksumCalculator.checksumBase = 65521;\n ChecksumCalculator.checksumIterationCount = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","var 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) {\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","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.1';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' 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=MjEuMQ==\";\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","/**\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 { 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 (!this.element.classList.contains(\"e-dialog\") && !this.element.classList.contains(\"e-card\") && document.scrollingElement) {\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) ? 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})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n *\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param ds\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors\n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n *\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param ds\n * @param query\n * @param xhr\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n *\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n *\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n *\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n *\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = '(' + res + ')';\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n *\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n *\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n *\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n *\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = val.replace(/'/g, '\\'\\'');\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\n if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' ||\n predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n }\n else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n }\n else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n }\n else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n }\n else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 &&\n splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 &&\n splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n else {\n operator = 'wildcard';\n }\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n *\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param settings\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.getResponseHeader('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n *\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n *\n * @param {string} e\n * @param e.selects\n * @param e.expands\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n if (splits.length === 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n }\n else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n }\n else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n }\n else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 &&\n _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n }\n else {\n selected[splits[0]].push(combineVal);\n }\n }\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\n };\n /**\n * Returns the groupby query string.\n *\n * @param {string} e\n * @param distinctFields\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if ((request && request.type === 'GET') && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n else if (dataV4Count in data) {\n count = data[dataV4Count];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n *\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation\n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n *\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n *\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Ajax Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n *\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-function */\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param query\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n // tslint:disable-next-line:no-string-literal\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = { result: result, aggregates: aggregates };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? { result: args.result, count: count, aggregates: aggregates } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\n * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n // tslint:disable-next-line:typedef\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor));\nexport { GraphQLAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n *\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param pageSize\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n *\n * @param {string} url\n * @param {Query} query?\n * @param query\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param settings\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Ajax } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param adaptor\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.requests = [];\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Overrides DataManager's default query with given query.\n *\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n *\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n *\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.requests = [];\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].httpRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].httpRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n *\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n ajax_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n *\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param position\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = JSON.parse(record);\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.ajaxReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.promise;\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n *\n * @param {string|string[]} from?\n * @param from\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n *\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n *\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n *\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @param fields\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n *\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n *\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n *\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n *\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n *\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n *\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n *\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n *\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n *\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n *\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n *\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n *\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n *\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n *\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n *\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @param inst\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string not ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.notEndsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) !== substr;\n };\n /**\n * Returns true if the input string starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * Returns true if the input string not starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.notStartsWith = function (input, start) {\n return input.slice(0, start.length) !== start;\n };\n /**\n * Returns true if the input string pattern(wildcard) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.wildCard = function (input, pattern) {\n var asteriskSplit;\n var optionalSplit;\n if (pattern.indexOf('*') !== -1) {\n if (pattern.charAt(0) !== '*') {\n pattern = '^' + pattern;\n }\n if (pattern.charAt(pattern.length - 1) !== '*') {\n pattern = pattern + '$';\n }\n asteriskSplit = pattern.split('*');\n for (var i = 0; i < asteriskSplit.length; i++) {\n if (asteriskSplit[i].indexOf('.') === -1) {\n asteriskSplit[i] = asteriskSplit[i] + '.*';\n }\n else {\n asteriskSplit[i] = asteriskSplit[i] + '*';\n }\n }\n pattern = asteriskSplit.join('');\n }\n if (pattern.indexOf('%3f') !== -1 || pattern.indexOf('?') !== -1) {\n optionalSplit = pattern.indexOf('%3f') !== -1 ? pattern.split('%3f') : pattern.split('?');\n pattern = optionalSplit.join('.');\n }\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regexPattern = new RegExp(pattern, 'g');\n return regexPattern.test(input);\n };\n /**\n * Returns true if the input string pattern(like) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.like = function (input, pattern) {\n if (pattern.indexOf('%') !== -1) {\n if (pattern.charAt(0) === '%' && pattern.lastIndexOf('%') < 2) {\n pattern = pattern.substring(1, pattern.length);\n return DataUtil.startsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.charAt(pattern.length - 1) === '%' && pattern.indexOf('%') > pattern.length - 3) {\n pattern = pattern.substring(0, pattern.length - 1);\n return DataUtil.endsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.lastIndexOf('%') !== pattern.indexOf('%') && pattern.lastIndexOf('%') > pattern.indexOf('%') + 1) {\n pattern = pattern.substring(pattern.indexOf('%') + 1, pattern.lastIndexOf('%'));\n return input.indexOf(pattern) !== -1;\n }\n else {\n return input.indexOf(pattern) !== -1;\n }\n }\n else {\n return false;\n }\n };\n /**\n * To return the sorting function based on the string.\n *\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n *\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n *\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n * @param field\n * @param aggregates\n * @param level\n * @param groupDs\n * @param format\n * @param isLazyLoad\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n *\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @param lookup\n * @param pKey\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n *\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @param fields\n * @param prefix\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n *\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n return from[nameSpace];\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n *\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n *\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @param param1\n * @param param2\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n *\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n *\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n *\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n *\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n *\n * @param {Object[]} json\n * @param {string} field\n * @param fieldName\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Process the given records based on the datamanager string.\n *\n * @param {string} datamanager\n * @param dm\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n var result = sampledata.executeLocal(query);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n }\n else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n }\n else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition === 'or') {\n query.where(Predicate.or(predicateList));\n }\n else if (pred.condition === 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n // tslint:disable-next-line:no-string-literal\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], \n // tslint:disable-next-line:no-string-literal\n e['ignoreCase'], e['ignoreAccent']); });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) { return query.aggregate(e.type, e.field); });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) { return query.sortBy(e.name, e.direction); });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) { return query.group(grp); });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n }\n else {\n var childPred = [];\n // tslint:disable-next-line:typedef\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition === 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n *\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n *\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n *\n * @param {string} er\n * @param error\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n *\n * @param {Object[]} ds\n * @param {string} field?\n * @param field\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not substringof',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not contains',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n * @param ignoreCase\n * @param ignoreAccent\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the actual input not contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n doesnotcontain: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) === -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) === -1;\n },\n /**\n * Returns true when the given input value is not null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotnull: function (actual) {\n return actual !== null && actual !== undefined;\n },\n /**\n * Returns true when the given input value is null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null || actual === undefined;\n },\n /**\n * Returns true when the actual input starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotstartwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notStartsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notStartsWith(actual, expected);\n },\n /**\n * Returns true when the actual input like with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n like: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.like(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.like(actual, expected);\n },\n /**\n * Returns true when the given input value is empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isempty: function (actual) {\n return actual === undefined || actual === '';\n },\n /**\n * Returns true when the given input value is not empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotempty: function (actual) {\n return actual !== undefined && actual !== '';\n },\n /**\n * Returns true when the actual input pattern(wildcard) matches with the given string.\n *\n * @param {string|Date} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n wildcard: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && typeof actual !== 'object' &&\n DataUtil.wildCard(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.wildCard(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotendwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notEndsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notEndsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n *\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n *\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n *\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n *\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n // eslint-disable-next-line no-useless-escape\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n if (arr[5].indexOf('.') > -1) {\n var secondsMs = arr[5].split('.');\n arr[5] = secondsMs[0];\n arr[6] = new Date(value).getUTCMilliseconds().toString();\n }\n else {\n arr[6] = '00';\n }\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10), parseInt(arr[6], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n *\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n *\n * @param {string} value\n */\n isGuid: function (value) {\n // eslint-disable-next-line security/detect-unsafe-regex\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n *\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n *\n * @param {string} key\n * @param {Object} val\n * @param stringify\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n *\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n *\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","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) {\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","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.1';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' 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=MjEuMQ==\";\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","/**\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 { 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 (!this.element.classList.contains(\"e-dialog\") && !this.element.classList.contains(\"e-card\") && document.scrollingElement) {\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 __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n this.resetList(dataSource, fields, query, e);\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n this.fixedHeaderElement = null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n this.list.scrollTop = 0;\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return true && this.inputElement.value.trim() !== '';\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = -1;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n return (this.isFiltering() ? this.inputWrapper : inputObject);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n this.list.scrollTop = count * height + fixedHead;\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n this.list.scrollTop = 0;\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n this.list.scrollTop = 0;\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () {\n queryString = '';\n }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && checkField_1.textContent.toString().indexOf(data[value]) !== -1 && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataCompTemp = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n if (noDataCompTemp && noDataCompTemp.length > 0) {\n for (var i = 0; i < noDataCompTemp.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n noDataCompTemp[i].classList.add('e-list-nr-template');\n }\n ele.appendChild(noDataCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if (isFiltering && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList(e);\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n this.valueTempElement.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = (!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ?\n false : true;\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n this.resetList(dataSource, fields, query);\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === _this.value : x[checkField_1] === _this.value;\n });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n _this.inputElement.setAttribute('aria-expanded', 'true');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n EventHandler.remove(document, 'mousedown', _this.onDocumentClick);\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n },\n open: function () {\n EventHandler.remove(document, 'mousedown', _this.onDocumentClick);\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && (this.beforePopupOpen || this.isEventCancel))) {\n return;\n }\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.isEventCancel = eventArgs.cancel;\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact) {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n for (var i = 0; i < footerCompTemp.length; i++) {\n this.footer.appendChild(footerCompTemp[i]);\n }\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n for (var i = 0; i < headerCompTemp.length; i++) {\n this.header.appendChild(headerCompTemp[i]);\n }\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource': break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var item = this_1.getElementByValue(newProp.value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList(e);\n }\n this.invokeRenderPopup(e);\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, isUndefined, Browser, compile, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar LISTWRAP = 'e-text-wrap';\nvar IELISTWRAP = 'e-ie-wrap';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED = 'e-disabled';\nvar PREVENTSELECT = 'e-prevent';\nvar treeAriaAttr = {\n treeRole: 'group',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */ (function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */ (function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */ (function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
\n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n // eslint-disable-next-line\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.isFirstRender = false;\n // Specifies whether the node is dropped or not\n _this.isNodeDropped = false;\n _this.isInteracted = false;\n _this.isRightClick = false;\n _this.mouseDownStatus = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n shiftSpace: 'shift+space',\n ctrlSpace: 'ctrl+space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.setTextWrap();\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED);\n }\n else {\n this.element.classList.remove(DISABLED);\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (isEnabled) {\n firstUl.setAttribute('aria-multiselectable', 'true');\n }\n else {\n firstUl.removeAttribute('aria-multiselectable');\n }\n };\n // eslint-disable-next-line\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n // eslint-disable-next-line\n var e = void 0;\n this.element.classList.add(INTERACTION);\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n /* eslint-disable */\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]\n && col !== 'url' && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n /* eslint-disable */\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[i], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n */\n TreeView.prototype.updateCheckedStateFromDS = function (id) {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n var id_1 = resultData[i][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n this.validNodes = (this.enablePersistence) ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[i], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.querySelector('.' + CHECKBOXWRAP).getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1)\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n checkboxEle.setAttribute('role', 'checkbox');\n checkboxEle.setAttribute('aria-label', 'checkbox');\n var icon = select('div.' + ICON, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n checkboxEle.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n e.item.setAttribute(\"tabindex\", \"-1\");\n EventHandler.add(e.item, 'focus', this.focusIn, this);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text,\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {\n e.item.classList.add(PREVENTSELECT);\n e.item.firstElementChild.setAttribute('style', 'cursor: not-allowed');\n }\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i])) && !isNOU(getValue(mapper.parentID, ds[i]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNOU(getValue(mapper.child, ds[i]))) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[i])) || !isNOU(getValue(mapper.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element) {\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[k].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[i], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[i].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.ensureChildCheckState = function (element, e) {\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var expandState = childElement.parentElement.getAttribute('aria-expanded');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[index].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n var li = selectAll('.' + LISTITEM, this.element);\n if (!isNOU(nodes)) {\n for (var len = nodes.length; len >= 0; len--) {\n var liEle = void 0;\n if (nodes.length === 1) {\n liEle = this.getElement(nodes[len - 1]);\n }\n else {\n liEle = this.getElement(nodes[len]);\n }\n if (isNOU(liEle)) {\n var node = void 0;\n node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n var ele = this.element.querySelector('[data-uid=\"' + id + '\"]');\n if (ele) {\n this.changeState(ele, 'uncheck', null);\n }\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length; j++) {\n var node = nodes[j] ? nodes[j].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[i]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[j]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (wrapper === currLi) {\n wrapper = select('.' + CHECKBOXWRAP, currLi);\n }\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n firstNode.setAttribute('tabindex', '0');\n this.updateIdAttr(null, firstNode);\n }\n if (this.allowTextWrap) {\n this.updateWrap();\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.setTextWrap = function () {\n (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);\n if (Browser.isIE) {\n (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);\n }\n };\n TreeView.prototype.updateWrap = function (ulEle) {\n if (!this.fullRowSelect) {\n return;\n }\n var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;\n var length = liEle.length;\n for (var i = 0; i < length; i++) {\n this.calculateWrap(liEle[i]);\n }\n };\n TreeView.prototype.calculateWrap = function (liEle) {\n var element = select('.' + FULLROW, liEle);\n if (element && element.nextElementSibling) {\n element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var eUids = this.expandedNodes;\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[i] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var proxy = this;\n this.expandCallback(arr[this.index], function () {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\n });\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n this.isNodeDropped = false;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice && !Browser.isIos ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY) : event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li || (li.classList.contains(PREVENTSELECT) && !(classList.contains(EXPANDABLE) || classList.contains(COLLAPSIBLE)))) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n if (event.originalEvent.which === 3) {\n this.isRightClick = true;\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var currLi = closest(wrapper, '.' + LISTITEM);\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li,\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var proxy_1 = this;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate && !this.isRefreshed) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function (args) {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n proxy_1.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {\n this.updateWrap(currLi);\n this.isFirstRender = false;\n }\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.expandArgs.isInteracted = this.isInteracted;\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = colArgs.isInteracted;\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var proxy = this;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function (args) {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n proxy.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n colArgs.isInteracted = this.isInteracted;\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }\n else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[i][this.fields.id] ? nodes[i][this.fields.id].toString() : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n var childData;\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot) {\n var _this = this;\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n var index = obj.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === parentId; });\n if (index !== -1) {\n return getValue(this.fields.child, obj[index]);\n }\n if (index === -1) {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var tempArray = getValue(this.fields.child, obj[i]);\n var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === parentId; }) : -1;\n if (childIndex !== -1) {\n return getValue(this.fields.child, tempArray[childIndex]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[i][0]) && !isNOU(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if ((!observedArgs.cancel) && !observedArgs.node.classList.contains(PREVENTSELECT)) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !e.ctrlKey)))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n this.isRightClick = false;\n }\n this.isRightClick = false;\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n focusedNode.setAttribute(\"tabindex\", \"-1\");\n }\n addClass([li], FOCUS);\n li.setAttribute('tabindex', '0');\n EventHandler.add(li, 'blur', this.focusOut, this);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = this.expandArgs.isInteracted;\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[i], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode,\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n else {\n _this.toggleSelect(focusedNode, e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n case 'shiftSpace':\n case 'ctrlSpace':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode, e);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName(\"e-checkbox-disabled\").length == 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n checkWrap.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n if (this.autoCheck) {\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[i]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[length_1]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNOU(child[length_1][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length_1][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length_1][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n var hierChildId = getValue(this.fields.child.toString(), child[length_1]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length_1]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[length_1]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n }\n else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n (isNOU(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '[tabindex=\"0\"]', this.element);\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? (isNOU(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[index];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[index];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[index];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[index];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], [HOVER, FOCUS]);\n preNode.setAttribute(\"tabindex\", \"-1\");\n if (!nextNode.classList.contains('e-disable') && !nextNode.classList.contains(PREVENTSELECT)) {\n addClass([nextNode], [HOVER, FOCUS]);\n nextNode.setAttribute('tabindex', '0');\n nextNode.focus();\n EventHandler.add(nextNode, 'blur', this.focusOut, this);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n var focusedElement = this.getFocusedNode();\n focusedElement.setAttribute(\"tabindex\", \"0\");\n addClass([focusedElement], [HOVER, FOCUS]);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\n };\n TreeView.prototype.focusOut = function (event) {\n var focusedElement = this.getFocusedNode();\n if (event.target == focusedElement) {\n removeClass([focusedElement], [HOVER, FOCUS]);\n EventHandler.remove(focusedElement, 'blur', this.focusOut);\n }\n };\n TreeView.prototype.onMouseOver = function (e) {\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n ;\n TreeView.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n ;\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n var checkboxElement = select('.' + CHECKBOXWRAP, currLi);\n if (this.showCheckBox && checkboxElement) {\n checked = checkboxElement.getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n };\n TreeView.prototype.createTextbox = function (liEle, e) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style_1 = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNOU(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }, 5);\n }\n else {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }\n }\n });\n };\n TreeView.prototype.renderTextBox = function (eventArgs, textEle, style) {\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl,\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNOU(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n }\n else {\n this.enableHtmlSanitizer ? txtEle.innerText = newText : txtEle.innerHTML = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], HOVER);\n }\n if (this.allowTextWrap) {\n this.calculateWrap(liEle);\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[i]);\n if (!isNOU(this.treeData[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n var proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n _this.removeVirtualEle();\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING) && (_this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT))) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function (e) {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if ((e && (!expand && !collapse) && e.event.offsetY < 7 && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) && !checkWrapper && templateTarget && e.event.offsetY > templateTarget.offsetHeight - 10) || ((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) || (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[index]);\n };\n /* eslint-disable */\n TreeView.prototype.dropAction = function (e) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var dragInstance;\n var nodeData = [];\n var liArray = [];\n dragInstance = e.dragData.draggable;\n for (var i_1 = 0; i_1 < dragInstance.ej2_instances.length; i_1++) {\n if (dragInstance.ej2_instances[i_1] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i_1];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n liArray.push(dragLi);\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n liArray = sNodes;\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i_2 = sNodes.length - 1; i_2 >= 0; i_2--) {\n if (dropLi.isSameNode(sNodes[i_2]) || this.isDescendant(sNodes[i_2], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_2], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i_3 = 0; i_3 < sNodes.length; i_3++) {\n if (dropLi.isSameNode(sNodes[i_3]) || this.isDescendant(sNodes[i_3], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_3], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n for (var i = 0; i < liArray.length; i++) {\n nodeData.push(this.getNode(liArray[i]));\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent('nodeDropped', nodeData);\n this.isNodeDropped = true;\n this.fields.dataSource = this.treeData;\n }\n this.triggerEvent('nodeDropped', nodeData);\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && (pos < 7) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = dropUl.childNodes[index];\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[i]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[i])) {\n iconClass = iconCss[i];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = (iconClass == \"e-drop-in\") ? \"Inside\" : ((event.offsetY < 7) ? \"Before\" : \"After\");\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position,\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[i]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[i];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var i = 0, len = eIcons.length; i < len; i++) {\n var icon = eIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[i])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[i]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[i]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var id = this.getId(dropLi);\n var refNode;\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = true;\n }\n if (this.dataType !== 1) {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n this.isFirstRender = false;\n }\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n refNode = dropUl.childNodes[index];\n if (!this.isFirstRender || this.dataType === 1) {\n if (refNode || this.sortOrder === 'None') {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE)) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n if (!refNode && ((this.sortOrder === 'Ascending') || (this.sortOrder === 'Descending'))) {\n if (dropUl.childNodes.length === 0) {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE)) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n else {\n var cNodes = dropUl.childNodes;\n for (var i = 0; i < li.length; i++) {\n for (var j = 0; j < cNodes.length; j++) {\n var returnValue = (this.sortOrder === 'Ascending') ? cNodes[j].textContent.toUpperCase() > li[i].innerText.toUpperCase() : cNodes[j].textContent.toUpperCase() < li[i].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[i], cNodes[j]);\n break;\n }\n dropUl.insertBefore(li[i], cNodes[cNodes.length]);\n }\n }\n }\n }\n }\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\n pos++;\n }\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = prop.hasOwnProperty('navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var items = getValue('child', obj[i]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[k]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (obj[i].hasOwnProperty(mapper.child) && obj[i][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager) && obj[i].hasOwnProperty('child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[i]);\n if (isNOU(childData)) {\n childData = [];\n }\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[k]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager) && !isNOU(getValue('child', obj[i]))) {\n var childData = getValue('child', obj[i]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[i][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[i]);\n var id = strNodes[i];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[i] == \"string\") {\n id = (nodes[i]) ? nodes[i].toString() : null;\n }\n else if (typeof nodes[i] === \"object\") {\n id = nodes[i] ? nodes[i].getAttribute(\"data-uid\").toString() : null;\n }\n if (validID.indexOf(id) == -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[k][this.fields.id] ? this.treeData[k][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[k][this.fields.id] ? treeData[k][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[l], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[k], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[m], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[j]);\n if (!isNOU(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n var childNodes;\n if (isNOU(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childItems = getValue('child', obj[i]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function (action, node) {\n this.renderReactTemplates();\n if (action === 'addNodes') {\n var nodeData = [];\n for (var i = 0; i < node.length; i++) {\n nodeData.push(this.getNode(this.getElement(isNOU(node[i][this.fields.id]) ? getValue(this.fields.id, node[i]).toString() : null)));\n }\n node = nodeData;\n }\n var eventArgs = { data: this.treeData, action: action, nodeData: node };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n var proxy_2 = this;\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy_2.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n var proxy_3 = this;\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n proxy_3.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var proxy_4 = this;\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n proxy_4.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n ;\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n }\n else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return (this.firstTap === secondTap);\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n */\n TreeView.prototype.setValidCheckedNode = function (node) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[len][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[j]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[i]);\n if (treeData[i] && nodeId && nodeId.toString() === currID) {\n treeData[i] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[i]))) {\n var childObj = getValue(mapper.child, treeData[i]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[i]))) {\n var childData = getValue('child', treeData[i]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == \"string\") {\n nodesID[0] = target.toString();\n }\n else if (typeof target === \"object\") {\n nodesID[0] = target.getAttribute(\"data-uid\").toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[i]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length == 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function (e) { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length == 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[i]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n var nodeData = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n nodeData.push(this.getNode(liEle));\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent('removeNode', nodeData);\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n var proxy = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n proxy.addGivenNodes(nodes, dropLi, index, true, dropUl);\n proxy.triggerEvent('addNodes', nodes);\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent('addNodes', nodes);\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {\n var _this = this;\n var index = data.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[i]);\n if (!isNOU(childItems)) {\n index = childItems.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n }\n else {\n parentsID.push(data[i][this.fields.id].toString());\n this.getHierarchicalParentId(data[i][this.fields.id].toString(), this.treeData, parentsID);\n break;\n }\n }\n }\n }\n return parentsID;\n };\n /**\n * Called internally if any of the property value changed.\n * @param {TreeView} newProp\n * @param {TreeView} oldProp\n * @returns void\n * @private\n */\n TreeView.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 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'allowTextWrap':\n this.setTextWrap();\n this.updateWrap();\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n this.reRenderNodes();\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n if (this.allowTextWrap) {\n this.setTextWrap();\n this.updateWrap();\n }\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[i].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[i], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n * @param { { [key: string]: Object }[] } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false)) {\n this.preventExpand = false;\n this.triggerEvent('addNodes', nodes);\n }\n };\n /**\n * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the\n * TreeView node. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNOU(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele, null);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n */\n TreeView.prototype.ensureVisible = function (node) {\n var parentsId = [];\n if (this.dataType == 1) {\n var nodeData = this.getTreeData(node);\n while (nodeData.length != 0 && !isNOU(nodeData[0][this.fields.parentID])) {\n parentsId.push(nodeData[0][this.fields.parentID].toString());\n nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());\n }\n }\n else if (this.dataType == 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId).reverse();\n }\n this.expandAll(parentsId);\n var liEle = this.getElement(node);\n if (!isNOU(liEle)) {\n if (typeof node == 'object') {\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n }\n setTimeout(function () { liEle.scrollIntoView({ behavior: \"smooth\" }); }, 450);\n }\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[i]);\n nodeData.push(this.getNode(dragLi));\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent('moveNodes', nodeData);\n };\n /**\n * Refreshes a particular node of the TreeView.\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {{ [key: string]: Object }[]} newData - Specifies the new data of TreeView node.\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var id;\n var isRefreshChild = false;\n if (this.dataType == 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType == 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNOU(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n /* eslint-disable */\n var newNodeData;\n var parentData;\n if (this.dataType == 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNOU(newData[k][this.fields.parentID])) {\n parentData = newData[k];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNOU(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNOU(childItems))) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[index]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute(\"title\", newNodeData[this.fields.tooltip]);\n }\n if (newNodeData.hasOwnProperty(this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent('refreshNode', [this.getNode(liEle)]);\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { NotifyPropertyChanges, Property, Event } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, attributes, formatUnit, ChildProperty, remove, L10n, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, prepend, Complex, closest, setValue, getValue, compile, append } from '@syncfusion/ej2-base';\nimport { select, selectAll, isNullOrUndefined as isNOU, matches, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar DDTHIDEICON = 'e-ddt-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar CUSTOMTEMPLATE = 'CustomTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @class */ (function (_super) {\n __extends(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], Fields.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], Fields.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], Fields.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], Fields.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], Fields.prototype, \"iconCss\", void 0);\n __decorate([\n Property('imageUrl')\n ], Fields.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('parentValue')\n ], Fields.prototype, \"parentValue\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], Fields.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], Fields.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], Fields.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], Fields.prototype, \"tooltip\", void 0);\n __decorate([\n Property('value')\n ], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty));\nexport { Fields };\nvar TreeSettings = /** @class */ (function (_super) {\n __extends(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate([\n Property('Auto')\n ], TreeSettings.prototype, \"expandOn\", void 0);\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"loadOnDemand\", void 0);\n return TreeSettings;\n}(ChildProperty));\nexport { TreeSettings };\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * \n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nvar DropDownTree = /** @class */ (function (_super) {\n __extends(DropDownTree, _super);\n function DropDownTree(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterTimer = null;\n _this.isFilteredData = false;\n _this.isFilterRestore = false;\n // eslint-disable-next-line\n _this.selectedData = [];\n _this.filterDelayTime = 300;\n _this.isClicked = false;\n // Specifies if the checkAll method has been called\n _this.isCheckAllCalled = false;\n _this.isFromFilterChange = false;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.customTemplateId = \"\" + this.element.id + CUSTOMTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = select('#' + this.element.id + '_tree', document);\n if (isTree) {\n var popupDiv = select('#' + this.element.id + '_popup', document);\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n this.ensureAutoCheck();\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('role', 'textbox');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.setAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree' });\n this.popupDiv.appendChild(this.tree);\n document.body.appendChild(this.popupDiv);\n this.wireTreeEvents();\n addClass([this.popupDiv], DDTHIDEICON);\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.oldValue = this.value;\n this.isInitialized = true;\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate\n || this.noRecordsTemplate || this.customTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.ensureAutoCheck = function () {\n if (this.allowFiltering && this.treeSettings.autoCheck) {\n this.setProperties({ treeSettings: { autoCheck: false } }, true);\n }\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNOU(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNOU(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNOU(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () { _this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n this.isFromFilterChange = true;\n if (!this.isFilteredData) {\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value,\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (value === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n fields = _this.cloneFields(_this.fields);\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n }\n else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(value, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n flag = true;\n }\n else {\n fields = _this.nestedFilter(value, args.fields);\n }\n }\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n }\n });\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n // eslint-disable-next-line\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, this.treeData[i]);\n if (!isNOU(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n // eslint-disable-next-line\n var children = node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n // eslint-disable-next-line\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, children[i]);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n if (matchedChildren.length !== 0) {\n filteredItems[this.fields.child] = matchedChildren;\n return filteredItems;\n }\n else {\n filteredItems[this.fields.child] = null;\n return (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n // eslint-disable-next-line\n var matchedData = [];\n // eslint-disable-next-line\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (var i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n // eslint-disable-next-line\n var parentId = matchedData[i][this.fields.parentValue];\n while (!isNOU(parentId)) {\n // eslint-disable-next-line\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n // eslint-disable-next-line\n var value_1 = this.treeData[j][this.fields.value];\n if (!isNOU(value_1) && (value_1 === parentId)) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNOU(parent_1) && (matchedDataSource.indexOf(parent_1) === -1)) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.isMatchedNode = function (value, node) {\n var checkValue = node[this.fields.text];\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireTreeEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireCheckAllWrapperEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n /* To unwire events for the dropdown tree */\n DropDownTree.prototype.unWireEvents = function () {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n };\n /* Trigger when the dropdown is clicked */\n DropDownTree.prototype.dropDownClick = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n };\n DropDownTree.prototype.mouseIn = function () {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n };\n DropDownTree.prototype.onMouseLeave = function () {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n };\n DropDownTree.prototype.getDirective = function () {\n return 'EJS-DROPDOWNTREE';\n };\n DropDownTree.prototype.focusOut = function (e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && (e.target === this.inputWrapper)) {\n return;\n }\n var target = e.relatedTarget;\n if ((target !== this.inputEle) && (isNOU(target)) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n };\n DropDownTree.prototype.onFocusOut = function (event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if ((this.allowMultiSelection || this.showCheckBox)) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.mode !== 'Delimiter' && this.mode !== 'Custom') {\n if (this.chipWrapper && (this.mode === 'Default')) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.oldValue = this.value;\n this.trigger('blur');\n };\n DropDownTree.prototype.updateView = function () {\n if ((!this.showCheckBox && !this.allowMultiSelection) || this.mode === 'Custom' || this.inputFocus) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.triggerChangeEvent = function (event) {\n var isEqual = this.ddtCompareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n var eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.oldValue = this.value;\n }\n };\n DropDownTree.prototype.ddtCompareValues = function (oldValue, newValue) {\n if (oldValue === null || newValue === null) {\n var isValid = oldValue === null ? ((newValue === oldValue) ? true : false) :\n (oldValue.length === 0 ? (newValue === oldValue) : false);\n return isValid;\n }\n else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (var i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n };\n DropDownTree.prototype.focusIn = function (e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && (this.value && this.value.length !== 0)) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n case 'shiftTab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n if (_this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n case 'altDown':\n if (!_this.isPopupOpen) {\n _this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (_this.showSelectAll && _this.showCheckBox) {\n _this.checkAllParent.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n var focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-hover', 'e-node-focus']);\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({ value: null }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n var disable = this.enabled ? 'false' : 'true';\n return {\n 'aria-disabled': disable,\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n // eslint-disable-next-line\n var l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var totalContent = this.l10n.getConstant('totalCountTemplate');\n var remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n this.overFlowWrapper.appendChild(remainElement);\n remainElement.innerText = remainContent.replace('${count}', this.value.length.toString());\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNOU(this.value)) {\n if (this.mode !== 'Box') {\n for (var index = 0; !isNOU(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n if (this.enableHtmlSanitizer) {\n this.overFlowWrapper.innerText = data;\n }\n else {\n this.overFlowWrapper.innerHTML = data;\n }\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n var textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n else {\n addClass([this.chipWrapper], HIDEICON);\n var ele = this.chipWrapper.cloneNode(true);\n var chips = selectAll('.' + CHIP, ele);\n for (var i = 0; i < chips.length; i++) {\n temp = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(chips[i]);\n data = this.overFlowWrapper.innerHTML;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n i = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - i;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = i;\n }\n else if (i === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n }\n if (remaining > 0) {\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, remainContent, totalContent));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.updateRemainTemplate = function (remainElement, remaining, remainContent, totalContent) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 &&\n this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.innerText = (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) ?\n remainContent.replace('${count}', remaining.toString()) : totalContent.replace('${count}', remaining.toString());\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n // eslint-disable-next-line\n var selectedData = this.getSelectedData(this.value[index]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n var attr = this.inputEle.getAttribute(attributes[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes[i], attr);\n this.inputEle.removeAttribute(attributes[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null && (this.value && this.value.length !== 0)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null || (this.value && this.value.length === 0) || this.checkWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNOU(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(this.checkWrapper)) {\n this.isClicked = true;\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n this.isClicked = false;\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n // eslint-disable-next-line\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.inputEle.setAttribute('tabindex', '-1');\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', '0');\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNOU(this.htmlAttributes[\"\" + htmlAttr])) {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n // eslint-disable-next-line\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = 0; i < this.value.length; i++) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNOU(data)) {\n this.value.splice(this.value.indexOf(this.value[i]), 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNOU(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n // eslint-disable-next-line\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNOU(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.oldValue = this.value;\n this.setProperties({ value: valArr }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n else {\n data = this.getItems(this.text);\n if (!isNOU(data)) {\n this.oldValue = this.value;\n this.setProperties({ value: [data[this.fields.value].toString()] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setSelectedValue = function () {\n if (this.value != null) {\n return;\n }\n if (!this.isInitialized) {\n this.oldValue = this.value;\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({ value: this.treeObj.selectedNodes }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n }\n else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({ value: this.treeObj.checkedNodes }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n };\n DropDownTree.prototype.setValidValue = function () {\n var _this = this;\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n }\n }\n else {\n if (this.showCheckBox) {\n var difference = this.value.filter(function (e) {\n return _this.treeObj.checkedNodes.indexOf(e) === -1;\n });\n if (difference.length > 0 || this.treeSettings.autoCheck) {\n this.treeObj.checkedNodes = this.value.slice();\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n }\n else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getItems = function (givenText) {\n // eslint-disable-next-line\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n // eslint-disable-next-line\n var text = getValue(this.fields.text, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n // eslint-disable-next-line\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n // eslint-disable-next-line\n var dataId = getValue(this.fields.text, data[i]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNOU(getValue(field.child, data[i]))) {\n // eslint-disable-next-line\n var childData = getValue(field.child, data[i]);\n // eslint-disable-next-line\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', data[i]))) {\n var child = 'child';\n // eslint-disable-next-line\n newData = this.getNestedItems(getValue(child, data[i]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n nodeExpanded: this.onNodeExpanded.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate\n });\n this.treeObj.root = this.root ? this.root : this;\n this.treeObj.appendTo('#' + this.tree.id);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n }\n else {\n _this.popupEle = _this.popupObj.element;\n }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled) {\n prepend([_this.popupDiv], _this.popupEle);\n removeClass([_this.popupDiv], DDTHIDEICON);\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && (!_this.popupDiv.classList.contains(NODATA))) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n /* eslint-disable */\n if (_this.hasTemplate && _this.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals);\n /* eslint-enable */\n _this.renderReactTemplates();\n }\n }\n if (!isCancelled) {\n attributes(_this.inputWrapper, { 'aria-expanded': 'true' });\n _this.popupObj.show(null, (_this.zIndex === 1000) ? _this.inputEle : null);\n removeClass([_this.popupEle], DDTHIDEICON);\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showCheckBox && _this.showSelectAll) && (!_this.popupDiv.classList.contains(NODATA)\n && _this.treeItems.length > 0)) {\n var focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-hover', 'e-node-focus']);\n }\n if (_this.checkSelectAll && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n if (_this.allowFiltering) {\n removeClass([_this.inputWrapper], [INPUTFOCUS]);\n _this.filterObj.element.focus();\n }\n var eventArgs = { popup: _this.popupObj };\n _this.trigger('open', eventArgs);\n }\n });\n };\n DropDownTree.prototype.updatePopupHeight = function () {\n if (this.isFirstRender) {\n return;\n }\n var popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n var height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n var height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll && (!this.popupDiv.classList.contains(NODATA))) {\n var height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n var border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n };\n DropDownTree.prototype.createPopup = function (element) {\n var _this = this;\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n close: function () {\n _this.isPopupOpen = false;\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && (this.inputWrapper.contains(target) || isTree || isScroller || isHeader || isFooter)) ||\n ((this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) ||\n (this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT)\n || target.classList.contains(CHECKBOXFRAME)))))) {\n this.isDocumentClick = false;\n e.preventDefault();\n }\n else if (!isNOU(this.inputWrapper) && !this.inputWrapper.contains(target) && this.inputFocus && !isFilter) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n }\n var eventArgs = { data: args.data };\n this.trigger('dataBound', eventArgs);\n if (this.filterObj === null) {\n this.isFilteredData = false;\n }\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n this.isFilterRestore = false;\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selectable: fields.selectable, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNOU(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getTreeDataType = function (ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof field.child === 'string') && isNOU(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n if (isNOU(this.fields.dataSource))\n this.fields.dataSource = [];\n for (var i = 0, len = this.fields.dataSource.length; i < len; i++) {\n if ((typeof field.child === 'string') && !isNOU(getValue(field.child, this.fields.dataSource[i]))) {\n return 2;\n }\n if (!isNOU(getValue(field.parentValue, this.fields.dataSource[i])) || !isNOU(getValue(field.hasChildren, this.fields.dataSource[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.treeObj.dataBind();\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n // eslint-disable-next-line\n var checkData = args.data;\n // eslint-disable-next-line\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: this.isClicked ? true : args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n if (this.value === null) {\n this.setProperties({ value: [] }, true);\n }\n }\n };\n DropDownTree.prototype.updateHiddenValue = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '';\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /* Triggers when the tree node is selected */\n DropDownTree.prototype.onNodeSelected = function (args) {\n if (this.showCheckBox) {\n return;\n }\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n this.isClicked = true;\n // eslint-disable-next-line\n var getNodeDetails = this.treeObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n this.treeObj.uncheckAll([args.node]);\n }\n else {\n this.treeObj.checkAll([args.node]);\n }\n this.isClicked = false;\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (!this.changeOnBlur && (this.allowMultiSelection || this.showCheckBox)) {\n this.triggerChangeEvent(args.event);\n }\n };\n DropDownTree.prototype.onNodeChecked = function (args) {\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isFilteredData && args.action === 'uncheck') {\n var id = getValue('id', args.data[0]).toString();\n this.removeSelectedData(id, true);\n }\n if (!this.isChipDelete && args.isInteracted) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li');\n var checkedNodes = this.treeObj.element.querySelectorAll('li .e-checkbox-wrapper[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if (wrap && args.action === 'uncheck' && (args.isInteracted || checkedNodes.length === 0)) {\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n }\n else if (wrap && args.action === 'check' && checkedNodes.length === nodes.length && (args.isInteracted || this.isCheckAllCalled)) {\n this.isReverseUpdate = true;\n this.isCheckAllCalled = false;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n }\n };\n DropDownTree.prototype.onNodeExpanded = function (args) {\n if (this.hasTemplate && this.portals) {\n this.portals = [].concat(this.treeObj.portals);\n /* eslint-enable */\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode === 'Custom') {\n return;\n }\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n var isValue = this.value !== null ? (this.value.length !== 0 ? true : false) : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (isNOU(this.value) || (this.value && this.value.length === 0)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.ensureClearIconPosition = function (floatLabelType) {\n if (floatLabelType !== 'Never') {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.setMultiSelectValue = function (newValues) {\n if (!this.isFilteredData) {\n this.setProperties({ value: this.isFromFilterChange && newValues && newValues.length == 0 ? this.value : newValues }, true);\n this.isFromFilterChange = false;\n if (newValues && newValues.length !== 0 && !this.showCheckBox) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n var selectedValues = isNOU(this.value) ? [] : this.value;\n for (var i = 0; i < newValues.length; i++) {\n if (isNOU(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({ value: selectedValues }, true);\n }\n };\n DropDownTree.prototype.setMultiSelect = function () {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes.slice());\n }\n else {\n var ddtValue = this.allowMultiSelection ? (this.showCheckBox ? this.treeObj.checkedNodes\n : this.treeObj.selectedNodes) : (this.value ? (this.showCheckBox ? this.value : [this.value[0]]) : null);\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n var checkSelection = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n }\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.chipWrapper && (this.mode === 'Box' && !isValue)) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.updateSelectedValues();\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getSelectedData = function (value) {\n // eslint-disable-next-line\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNOU(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value);\n }\n else {\n data = this.treeObj.getNode(value);\n }\n if (!isNOU(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n };\n DropDownTree.prototype.getNodeData = function (id) {\n var childItems;\n if (isNOU(id)) {\n return childItems;\n }\n else if (this.treeDataType === 1) {\n for (var i = 0, objlen = this.treeItems.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeItems[i];\n }\n }\n }\n else {\n return this.getChildNodeData(this.treeItems, this.fields, id);\n }\n return childItems;\n };\n DropDownTree.prototype.getChildNodeData = function (obj, mapper, id) {\n var newChildItems;\n if (isNOU(obj)) {\n return newChildItems;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataValue = getValue(mapper.value, obj[i]);\n if (obj[i] && dataValue && dataValue.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childNodeData = getValue(mapper.child, obj[i]);\n newChildItems = this.getChildNodeData(childNodeData, this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newChildItems = this.getChildNodeData(getValue(child, obj[i]), this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n }\n return newChildItems;\n };\n DropDownTree.prototype.getChildMapperFields = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n DropDownTree.prototype.removeSelectedData = function (value, muteOnChange) {\n var selectedValues = isNOU(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({ value: selectedValues }, muteOnChange);\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n // eslint-disable-next-line\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNOU(this.value)) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += (this.delimiterChar + ' ' + temp);\n textValue += (',' + temp);\n }\n else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Custom' && this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) &&\n (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n hiddenInputValue += '';\n }\n if (this.selectedText.length >= 1) {\n this.setProperties({ text: textValue }, true);\n }\n this.hiddenElement.innerHTML = hiddenInputValue;\n if (this.mode === 'Custom' && (this.allowMultiSelection || this.showCheckBox)) {\n this.setTagValues();\n }\n }\n var isValid = this.getValidMode();\n if (this.mode !== 'Custom' && this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({ text: null }, true);\n }\n else {\n this.setProperties({ text: textValue }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n };\n DropDownTree.prototype.setChipValues = function (text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value }\n });\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE + ' ' + ICONS });\n if (this.enableHtmlSanitizer) {\n chipContent.innerText = text;\n }\n else {\n chipContent.innerHTML = text;\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mousedown', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null) {\n return;\n }\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n if (!this.inputWrapper.classList.contains(SHOW_CHIP)) {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n var chip = this.createElement('span', {\n className: CHIP,\n });\n if (!this.inputEle.classList.contains(CHIP_INPUT)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n if (this.chipWrapper.classList.contains(HIDEICON)) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var template = this.customTemplate;\n var templateId = this.customTemplateId;\n var templatestring = 'customTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({ 'value': this.value, 'text': this.text }, this, templatestring, templateId, this.isStringTemplate, undefined, chipContent);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, chipContent);\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n // eslint-disable-next-line\n var compiledString = this.templateComplier(this.headerTemplate);\n var tempArr = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, undefined, this.header);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.header);\n }\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n };\n // eslint-disable-next-line\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n // eslint-disable-next-line\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\n if (this.footer) {\n this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n // eslint-disable-next-line\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n if (this.value == [] && this.text == null) {\n return;\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.oldValue = this.value;\n this.setProperties({ value: [] }, true);\n }\n this.dataValue = null;\n this.setProperties({ text: null }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n }\n else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.clearCheckAll = function () {\n if (this.showSelectAll && this.value && this.value.length === 0) {\n this.setLocale(false);\n }\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n }\n else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = true;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n }\n else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n var value = Object.keys(prop.treeSettings)[0];\n if (value === 'autoCheck') {\n this.ensureAutoCheck();\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (value === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (value === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n /* eslint-disable */\n this.portals = [];\n /* eslint-enable */\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n }\n }\n else {\n // eslint-disable-next-line\n var l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n }\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n this.ensureAutoCheck();\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNOU(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNOU(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.' + OVERFLOW_VIEW, this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && (this.value && this.value.length !== 0)) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n };\n DropDownTree.prototype.updateOption = function () {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n }\n else if (this.hiddenElement.hasAttribute('multiple') && (!this.allowMultiSelection && !this.showCheckBox)) {\n this.hiddenElement.removeAttribute('multiple');\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {DropDownTreeModel} newProp - specifies the newProp value.\n * @param {DropDownTreeModel} oldProp - specifies the newProp value.\n * @returns {void}\n * @private\n */\n DropDownTree.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 if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode === 'Custom') {\n if (this.overFlowWrapper) {\n detach(this.overFlowWrapper);\n }\n if (this.chipWrapper) {\n detach(this.chipWrapper);\n }\n this.setTagValues();\n }\n else {\n if (oldProp.mode === 'Custom') {\n this.updateOverflowWrapper(this.wrapText);\n }\n this.updateModelMode();\n }\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n this.updateTreeSettings(newProp);\n break;\n case 'customTemplate':\n if (this.mode !== \"Custom\") {\n return;\n }\n this.chipCollection.innerHTML = \"\";\n this.setTagValues();\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n this.updateValue(this.value);\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({ value: [] }, true);\n this.setProperties({ text: null }, true);\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n detach(this.inputWrapper);\n detach(this.popupDiv);\n this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection) {\n this.element.classList.remove(CHIP_INPUT);\n }\n _super.prototype.destroy.call(this);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n // eslint-disable-next-line\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = { popup: this.popupObj };\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n addClass([this.popupEle], DDTHIDEICON);\n }\n attributes(this.inputWrapper, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n this.trigger('close', eventArgs);\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate([\n Property('The Request Failed')\n ], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property('')\n ], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate([\n Property(\"${value.length} item(s) selected\")\n ], DropDownTree.prototype, \"customTemplate\", void 0);\n __decorate([\n Property(',')\n ], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, Fields)\n ], DropDownTree.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownTree.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property({})\n ], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Default')\n ], DropDownTree.prototype, \"mode\", void 0);\n __decorate([\n Property('No Records Found')\n ], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('None')\n ], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"text\", void 0);\n __decorate([\n Complex({}, TreeSettings)\n ], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate([\n Property('Unselect All')\n ], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"value\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DropDownTree.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"wrapText\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"select\", void 0);\n DropDownTree = __decorate([\n NotifyPropertyChanges\n ], DropDownTree);\n return DropDownTree;\n}(Component));\nexport { DropDownTree };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Event, getUniqueID, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor, EventHandler } from '@syncfusion/ej2-base';\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n *
\n *
Item 1
\n *
Item 2
\n *
Item 3
\n *
Item 4
\n *
Item 5
\n *
\n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nvar Sortable = /** @class */ (function (_super) {\n __extends(Sortable, _super);\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.getHelper = function (e) {\n // eslint-disable-next-line prefer-const\n var target = _this.getSortableElement(e.sender.target);\n if (!_this.isValidTarget(target, _this)) {\n return false;\n }\n var element;\n if (_this.helper) {\n element = _this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = target.offsetWidth + \"px\";\n element.style.height = target.offsetHeight + \"px\";\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n // eslint-disable-next-line\n _this.onDrag = function (e) {\n if (!e.target) {\n return;\n }\n _this.trigger('drag', { event: e.event, element: _this.element, target: e.target });\n var newInst = _this.getSortableInstance(e.target);\n var target = _this.getSortableElement(e.target, newInst);\n if ((_this.isValidTarget(target, newInst) || e.target.className.indexOf('e-list-group-item') > -1) && (_this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target : true)) {\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n target = e.target;\n }\n _this.curTarget = target;\n if (_this.target === target) {\n return;\n }\n var oldIdx = _this.getIndex(newInst.placeHolderElement, newInst);\n var placeHolder = _this.getPlaceHolder(target, newInst);\n var newIdx = void 0;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) : oldIdx;\n newIdx = _this.getIndex(target, newInst, e.event);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n remove(newInst.placeHolderElement);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== _this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n _this.refreshDisabled(oldIdx, newIdx, newInst);\n }\n else {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) :\n _this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = _this.getIndex(target, newInst);\n var idx = newInst.element !== _this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n _this.updateItemClass(newInst);\n newInst.element.insertBefore(_this.target, newInst.element.children[idx]);\n _this.refreshDisabled(oldIdx, newIdx, newInst);\n _this.curTarget = _this.target;\n _this.trigger('drop', {\n droppedElement: _this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: _this.scope\n });\n }\n }\n else if (_this.curTarget !== _this.target && _this.scope && _this.curTarget !== target && !isNullOrUndefined(newInst.placeHolder)) {\n remove(_this.getSortableInstance(_this.curTarget).placeHolderElement);\n _this.curTarget = _this.target;\n }\n newInst = _this.getSortableInstance(_this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (_this.isPlaceHolderPresent(newInst)) {\n _this.removePlaceHolder(newInst);\n }\n }\n else {\n var placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n var inst_1;\n placeHolders.forEach(function (placeHolder) {\n inst_1 = _this.getSortableInstance(placeHolder);\n if (inst_1.element && inst_1 !== newInst) {\n _this.removePlaceHolder(inst_1);\n }\n });\n }\n };\n // eslint-disable-next-line\n _this.onDragStart = function (e) {\n _this.target = _this.getSortableElement(e.target);\n var cancelDrag = false;\n _this.target.classList.add('e-grabbed');\n _this.curTarget = _this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n var args = { cancel: false, element: _this.element, target: _this.target };\n _this.trigger('beforeDragStart', args, function (observedArgs) {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n _this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n _this.trigger('dragStart', {\n event: e.event, element: _this.element, target: _this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement\n });\n }\n else {\n _this.trigger('dragStart', { event: e.event, element: _this.element, target: _this.target });\n }\n };\n // eslint-disable-next-line\n _this.onDragStop = function (e) {\n var dropInst = _this.getSortableInstance(_this.curTarget);\n var prevIdx;\n var curIdx;\n var handled;\n prevIdx = _this.getIndex(_this.target);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n var curIdx_1 = _this.getIndex(dropInst.placeHolderElement, dropInst);\n var args = {\n previousIndex: prevIdx, currentIndex: curIdx_1, target: e.target, droppedElement: _this.target,\n helper: e.helper, cancel: false, handled: false\n };\n _this.trigger('beforeDrop', args, function (observedArgs) {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n _this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n var ele = _this.target.cloneNode(true);\n _this.target.classList.remove('e-grabbed');\n _this.target = ele;\n }\n dropInst.element.insertBefore(_this.target, dropInst.placeHolderElement);\n var curIdx_2 = _this.getIndex(_this.target, dropInst);\n prevIdx = _this === dropInst && (prevIdx - curIdx_2) > 1 ? prevIdx - 1 : prevIdx;\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx_2,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope, handled: handled\n });\n }\n remove(dropInst.placeHolderElement);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n // eslint-disable-next-line prefer-const\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element === e.target || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: _this.curTarget === _this.target ? prevIdx : curIdx,\n target: e.target, droppedElement: _this.target, helper: e.helper, cancel: false\n };\n _this.trigger('beforeDrop', beforeDropArgs, function (observedArgs) {\n if ((dropInst.element === e.target || e.target.className.indexOf('e-list-nrt') > -1 || e.target.className.indexOf('e-list-nr-template') > -1\n || e.target.closest('.e-list-nr-template')) && !observedArgs.cancel) {\n _this.updateItemClass(dropInst);\n dropInst.element.appendChild(_this.target);\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope\n });\n }\n });\n }\n _this.target.classList.remove('e-grabbed');\n _this.target = null;\n _this.curTarget = null;\n remove(e.helper);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n };\n _this.bind();\n return _this;\n }\n Sortable_1 = Sortable;\n Sortable.prototype.bind = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n };\n Sortable.prototype.initializeDraggable = function () {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: \".\" + this.itemClass,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 5\n });\n this.wireEvents();\n };\n Sortable.prototype.wireEvents = function () {\n var wrapper = this.element;\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n };\n Sortable.prototype.unwireEvents = function () {\n var wrapper = this.element;\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n };\n Sortable.prototype.keyDownHandler = function (e) {\n if (e.keyCode === 27) {\n var dragStop = getComponent(this.element, 'draggable');\n if (dragStop) {\n dragStop.intDestroy(null);\n }\n var dragWrapper = document.getElementsByClassName('e-sortableclone')[0];\n if (dragWrapper) {\n dragWrapper.remove();\n }\n var dragPlaceholder = document.getElementsByClassName('e-sortable-placeholder')[0];\n if (dragPlaceholder) {\n dragPlaceholder.remove();\n }\n }\n };\n Sortable.prototype.getPlaceHolder = function (target, instance) {\n if (instance.placeHolder) {\n var placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n };\n Sortable.prototype.isValidTarget = function (target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n };\n Sortable.prototype.removePlaceHolder = function (instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n };\n Sortable.prototype.updateItemClass = function (instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n };\n Sortable.prototype.getSortableInstance = function (element) {\n element = closest(element, \".e-\" + this.getModuleName());\n if (element) {\n var inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n };\n Sortable.prototype.refreshDisabled = function (oldIdx, newIdx, instance) {\n if (instance === this) {\n var element = void 0;\n var increased = oldIdx < newIdx;\n var disabledIdx = void 0;\n var start = increased ? oldIdx : newIdx;\n var end = increased ? newIdx : oldIdx;\n while (start <= end) {\n element = this.element.children[start];\n if (element.classList.contains('e-disabled')) {\n disabledIdx = this.getIndex(element);\n this.element.insertBefore(element, this.element.children[increased ? disabledIdx + 2 : disabledIdx - 1]);\n start = increased ? disabledIdx + 2 : disabledIdx + 1;\n }\n else {\n start++;\n }\n }\n }\n };\n Sortable.prototype.getIndex = function (target, instance, e) {\n if (instance === void 0) { instance = this; }\n var idx;\n var placeHolderPresent;\n [].slice.call(instance.element.children).forEach(function (element, index) {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n var offset = target.getBoundingClientRect();\n var clientY = offset.bottom - ((offset.bottom - offset.top) / 2);\n idx = e.clientY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n };\n Sortable.prototype.getSortableElement = function (element, instance) {\n if (instance === void 0) { instance = this; }\n return closest(element, \".\" + instance.itemClass);\n };\n Sortable.prototype.queryPositionInfo = function (value) {\n value.left = pageXOffset ? parseFloat(value.left) - pageXOffset + \"px\" : value.left;\n value.top = pageYOffset ? parseFloat(value.top) - pageYOffset + \"px\" : value.top;\n return value;\n };\n Sortable.prototype.isPlaceHolderPresent = function (instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, \"#\" + instance.element.id);\n };\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n Sortable.prototype.moveTo = function (destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n };\n /**\n * It is used to destroy the Sortable library.\n */\n Sortable.prototype.destroy = function () {\n this.unwireEvents();\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n _super.prototype.destroy.call(this);\n };\n Sortable.prototype.getModuleName = function () {\n return 'sortable';\n };\n Sortable.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 'itemClass':\n [].slice.call(this.element.children).forEach(function (element) {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n };\n var Sortable_1;\n __decorate([\n Property(false)\n ], Sortable.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"itemClass\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"scope\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"helper\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"placeHolder\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drop\", void 0);\n Sortable = Sortable_1 = __decorate([\n NotifyPropertyChanges\n ], Sortable);\n return Sortable;\n}(Base));\nexport { Sortable };\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n }\n else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { EventHandler, closest, removeClass, addClass, Complex, Property, ChildProperty, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, getComponent, Event, extend, detach, attributes } from '@syncfusion/ej2-base';\nimport { getUniqueID, Browser, formatUnit, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { prepend, append } from '@syncfusion/ej2-base';\nimport { cssClass, Sortable, moveTo } from '@syncfusion/ej2-lists';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\n/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Multiple')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Left')\n ], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Defines the toolbar settings of List Box.\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([])\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property('Right')\n ], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ListBox = /** @class */ (function (_super) {\n __extends(ListBox, _super);\n /**\n * Constructor for creating the ListBox component.\n *\n * @param {ListBoxModel} options - Specifies ListBox model\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function ListBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isValidKey = false;\n _this.isDataSourceUpdate = false;\n _this.keyDownStatus = false;\n return _this;\n }\n ListBox_1 = ListBox;\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}.\n * @private\n */\n ListBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Build and render the component.\n *\n * @private\n * @returns {void}\n */\n ListBox.prototype.render = function () {\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n _super.prototype.render.call(this);\n this.setEnabled();\n this.renderComplete();\n };\n ListBox.prototype.initWrapper = function () {\n var hiddenSelect = this.createElement('select', { className: 'e-hidden-select', attrs: { 'multiple': '' } });\n hiddenSelect.style.visibility = 'hidden';\n this.list.classList.add('e-listbox-wrapper');\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n this.list.classList.add('e-lib');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n }\n else {\n if (this.initLoad) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n if (this.itemTemplate) {\n this.renderReactTemplates();\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, { 'role': 'listbox', 'aria-label': 'listbox', 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false' });\n this.updateSelectionSettings();\n };\n ListBox.prototype.updateSelectionSettings = function () {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n var l10nSelect = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n };\n ListBox.prototype.initDraggable = function () {\n var _this = this;\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n dragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: function () { return _this.createElement('span', { className: 'e-placeholder' }); },\n helper: function (e) {\n var wrapper = _this.list.cloneNode();\n var ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n var refEle = _this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((_this.value && _this.value.length) > 1 && _this.isSelected(ele)) {\n ele.appendChild(_this.createElement('span', {\n className: 'e-list-badge', innerHTML: _this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(_this.element) + '';\n return wrapper;\n }\n });\n }\n };\n ListBox.prototype.updateActionCompleteData = function (li, item, index) {\n this.jsonData.splice(index, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\n if (this.toolbarSettings.items.length) {\n var toolElem = this.createElement('div', { className: 'e-listbox-tool', attrs: { 'role': 'toolbar' } });\n var wrapper = this.createElement('div', {\n className: 'e-listboxtool-wrapper e-lib e-' + pos.toLowerCase()\n });\n this.list.parentElement.insertBefore(wrapper, this.list);\n wrapper.appendChild(pos === 'Right' ? this.list : toolElem);\n wrapper.appendChild(pos === 'Right' ? toolElem : this.list);\n this.createButtons(toolElem);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.scope) {\n document.querySelector(this.scope).setAttribute('data-value', this.element.id);\n }\n else {\n this.updateToolBarState();\n }\n }\n var scope = this.element.getAttribute('data-value');\n if (prevScope && scope && (prevScope !== scope)) {\n this.tBListBox = getComponent(document.getElementById(prevScope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n else if (scope) {\n this.tBListBox = getComponent(document.getElementById(scope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.createButtons = function (toolElem) {\n var _this = this;\n var btn;\n var ele;\n var title;\n var l10n = new L10n(this.getModuleName(), {\n moveUp: 'Move Up', moveDown: 'Move Down', moveTo: 'Move To',\n moveFrom: 'Move From', moveAllTo: 'Move All To', moveAllFrom: 'Move All From'\n }, this.locale);\n this.toolbarSettings.items.forEach(function (value) {\n title = l10n.getConstant(value);\n ele = _this.createElement('button', {\n attrs: {\n 'type': 'button',\n 'data-value': value,\n 'title': title,\n 'aria-label': title\n }\n });\n toolElem.appendChild(ele);\n btn = new Button({ iconCss: 'e-icons e-' + value.toLowerCase() }, ele);\n btn.createElement = _this.createElement;\n });\n };\n ListBox.prototype.validationAttribute = function (input, hiddenSelect) {\n _super.prototype.validationAttribute.call(this, input, hiddenSelect);\n hiddenSelect.required = input.required;\n input.required = false;\n };\n ListBox.prototype.setHeight = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n ele.style.height = formatUnit(this.height);\n if (this.allowFiltering && this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else {\n removeClass([this.list], 'e-filter-list');\n }\n };\n ListBox.prototype.setCssClass = function () {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.cssClass) {\n addClass([wrap], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n addClass([this.list], 'e-rtl');\n }\n };\n ListBox.prototype.setEnable = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.enabled) {\n removeClass([ele], cssClass.disabled);\n }\n else {\n addClass([ele], cssClass.disabled);\n }\n };\n ListBox.prototype.showSpinner = function () {\n if (!this.spinner) {\n this.spinner = this.createElement('div', { className: 'e-listbox-wrapper' });\n }\n this.spinner.style.height = formatUnit(this.height);\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n createSpinner({ target: this.spinner }, this.createElement);\n showSpinner(this.spinner);\n };\n ListBox.prototype.hideSpinner = function () {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n };\n ListBox.prototype.onInput = function () {\n this.isDataSourceUpdate = false;\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n };\n ListBox.prototype.clearText = function () {\n this.filterInput.value = '';\n this.refreshClearIcon();\n var event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n };\n ListBox.prototype.refreshClearIcon = function () {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n };\n ListBox.prototype.onActionComplete = function (ulElement, list, e) {\n var searchEle;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n if (list.length === 0) {\n var noRecElem = ulElement.childNodes[0];\n if (noRecElem) {\n ulElement.removeChild(noRecElem);\n }\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n }\n this.initWrapper();\n this.setSelection();\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n }\n else {\n if (this.isDataSourceUpdate) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.isDataSourceUpdate = false;\n }\n if (this.allowFiltering) {\n var filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n var txtLength = this.filterInput.value.length;\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n filterElem.focus();\n }\n }\n if (this.toolbarSettings.items.length && this.scope && this.scope.indexOf('#') > -1 && !isNullOrUndefined(e)) {\n var scope = this.scope.replace('#', '');\n var scopedLB = getComponent(document.getElementById(scope), this.getModuleName());\n scopedLB.initToolbar();\n }\n this.initLoad = false;\n };\n ListBox.prototype.initToolbarAndStyles = function () {\n this.initToolbar();\n this.setCssClass();\n this.setEnable();\n this.setHeight();\n };\n ListBox.prototype.triggerDragStart = function (args) {\n var _this = this;\n var badge;\n args = extend(this.getDragArgs(args), { dragSelected: true });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', args, function (dragEventArgs) {\n _this.allowDragAll = dragEventArgs.dragSelected;\n if (!_this.allowDragAll) {\n badge = _this.ulElement.getElementsByClassName('e-list-badge')[0];\n if (badge) {\n detach(badge);\n }\n }\n });\n };\n ListBox.prototype.triggerDrag = function (args) {\n var scrollParent;\n var boundRect;\n var scrollMoved = 36;\n var scrollHeight = 10;\n if (this.itemTemplate && args.target) {\n if (args.target && args.target.closest('.e-list-item')) {\n scrollHeight = args.target.closest('.e-list-item').scrollHeight;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItem = args.element.querySelector('.e-list-item');\n if (listItem) {\n scrollHeight = listItem.scrollHeight;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var event = args.event;\n var wrapper;\n if (args.target && (args.target.classList.contains('e-listbox-wrapper') || args.target.classList.contains('e-list-item')\n || args.target.classList.contains('e-filter-parent') || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item'))) {\n if (args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent')\n || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item')) {\n wrapper = args.target.closest('.e-listbox-wrapper');\n }\n else {\n wrapper = args.target;\n }\n if (this.allowFiltering) {\n scrollParent = wrapper.querySelector('.e-list-parent');\n }\n else {\n scrollParent = wrapper;\n }\n boundRect = scrollParent.getBoundingClientRect();\n if ((boundRect.y + scrollParent.offsetHeight) - (event.pageY + scrollMoved) < 1) {\n scrollParent.scrollTop = scrollParent.scrollTop + scrollHeight;\n }\n else if ((event.pageY - scrollMoved) - boundRect.y < 1) {\n scrollParent.scrollTop = scrollParent.scrollTop - scrollHeight;\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n this.dragValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n if (this.value.indexOf(this.dragValue) > -1) {\n args.items = this.getDataByValues(this.value);\n }\n else {\n args.items = this.getDataByValues([this.dragValue]);\n }\n this.trigger('beforeDrop', args);\n };\n ListBox.prototype.dragEnd = function (args) {\n var _this = this;\n var listData;\n var liColl;\n var jsonData;\n var droppedData;\n var selectedOptions;\n var sortedData;\n var dropValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n var listObj = this.getComponent(args.droppedElement);\n var getArgs = this.getDragArgs({ target: args.droppedElement }, true);\n var sourceArgs = { previousData: this.dataSource };\n var destArgs = { previousData: listObj.dataSource };\n var dragArgs = extend({}, getArgs, { target: args.target, source: { previousData: this.dataSource },\n previousIndex: args.previousIndex, currentIndex: args.currentIndex });\n if (listObj !== this) {\n var sourceArgs1 = extend(sourceArgs, { currentData: this.listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1, destination: destArgs });\n }\n if (Browser.isIos) {\n this.list.style.overflow = '';\n }\n var targetListObj = this.getComponent(args.target);\n if (targetListObj && targetListObj.listData.length === 0) {\n var noRecElem = targetListObj.ulElement.childNodes[0];\n if (noRecElem) {\n targetListObj.ulElement.removeChild(noRecElem);\n }\n }\n if (listObj === this) {\n var ul_1 = this.ulElement;\n listData = [].slice.call(this.listData);\n liColl = [].slice.call(this.liCollections);\n jsonData = [].slice.call(this.jsonData);\n sortedData = [].slice.call(this.sortedData);\n var toSortIdx_1 = args.currentIndex;\n var toIdx_1 = args.currentIndex = this.getCurIdx(this, args.currentIndex);\n var rIdx = listData.indexOf(this.getDataByValue(dropValue));\n var jsonIdx = jsonData.indexOf(this.getDataByValue(dropValue));\n var sIdx = sortedData.indexOf(this.getDataByValue(dropValue));\n listData.splice(toIdx_1, 0, listData.splice(rIdx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx, 1)[0]);\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(rIdx, 1)[0]);\n if (this.allowDragAll) {\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 ? this.value : [dropValue];\n selectedOptions.forEach(function (value) {\n if (value !== dropValue) {\n var idx = listData.indexOf(_this.getDataByValue(value));\n var jsonIdx_1 = jsonData.indexOf(_this.getDataByValue(value));\n var sIdx_1 = sortedData.indexOf(_this.getDataByValue(value));\n if (idx > toIdx_1) {\n toIdx_1++;\n }\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx_1, 1)[0]);\n listData.splice(toIdx_1, 0, listData.splice(idx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx_1, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(idx, 1)[0]);\n ul_1.insertBefore(_this.getItems()[_this.getIndexByValue(value)], ul_1.getElementsByClassName('e-placeholder')[0]);\n }\n });\n }\n this.listData = listData;\n this.jsonData = jsonData;\n this.sortedData = sortedData;\n this.liCollections = liColl;\n }\n else {\n var li_1;\n var fLiColl_1 = [].slice.call(this.liCollections);\n var currIdx_1 = args.currentIndex = this.getCurIdx(listObj, args.currentIndex);\n var ul_2 = listObj.ulElement;\n listData = [].slice.call(listObj.listData);\n liColl = [].slice.call(listObj.liCollections);\n jsonData = [].slice.call(listObj.jsonData);\n sortedData = [].slice.call(listObj.sortedData);\n selectedOptions = (this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 && this.allowDragAll)\n ? this.value : [dropValue];\n var fListData_1 = [].slice.call(this.listData);\n var fSortData_1 = [].slice.call(this.sortedData);\n selectedOptions.forEach(function (value, index) {\n droppedData = _this.getDataByValue(value);\n var srcIdx = _this.listData.indexOf(droppedData);\n var jsonSrcIdx = _this.jsonData.indexOf(droppedData);\n var sortIdx = _this.sortedData.indexOf(droppedData);\n fListData_1.splice(srcIdx, 1);\n _this.jsonData.splice(jsonSrcIdx, 1);\n fSortData_1.splice(sortIdx, 1);\n _this.listData = fListData_1;\n _this.sortedData = fSortData_1;\n var destIdx = value === dropValue ? args.currentIndex : currIdx_1;\n listData.splice(destIdx, 0, droppedData);\n jsonData.splice(destIdx, 0, droppedData);\n sortedData.splice(destIdx, 0, droppedData);\n liColl.splice(destIdx, 0, fLiColl_1.splice(srcIdx, 1)[0]);\n if (!value) {\n var liCollElem_1 = _this.getItems();\n for (var i = 0; i < liCollElem_1.length; i++) {\n if (liCollElem_1[i].getAttribute('data-value') === null && liCollElem_1[i].classList.contains('e-list-item')) {\n li_1 = liCollElem_1[i];\n break;\n }\n }\n }\n else {\n li_1 = _this.getItems()[_this.getIndexByValue(value)];\n }\n if (!li_1) {\n li_1 = args.helper;\n }\n _this.removeSelected(_this, value === dropValue ? [args.droppedElement] : [li_1]);\n ul_2.insertBefore(li_1, ul_2.getElementsByClassName('e-placeholder')[0]);\n currIdx_1++;\n });\n if (this.fields.groupBy) {\n var sourceElem = this.renderItems(this.listData, this.fields);\n this.updateListItems(sourceElem, this.ulElement);\n this.setSelection();\n }\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox\n !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy || listObj.itemTemplate || this.itemTemplate) {\n var sortable = getComponent(ul_2, 'sortable');\n var sourceElem = listObj.renderItems(listData, listObj.fields);\n listObj.updateListItems(sourceElem, ul_2);\n this.setSelection();\n if (sortable.placeHolderElement) {\n ul_2.appendChild(sortable.placeHolderElement);\n }\n ul_2.appendChild(args.helper);\n listObj.setSelection();\n }\n this.liCollections = fLiColl_1;\n listObj.liCollections = liColl;\n listObj.jsonData = extend([], [], jsonData, false);\n listObj.listData = extend([], [], listData, false);\n listObj.sortedData = extend([], [], sortedData, false);\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n }\n if (this === listObj) {\n var sourceArgs1 = extend(sourceArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1 });\n }\n else {\n var dragArgs1 = extend(destArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { destination: dragArgs1 });\n }\n this.trigger('drop', dragArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var liCollElem = dragArgs.elements;\n if (liCollElem.length) {\n for (var i = 0; i < liCollElem.length; i++) {\n liCollElem[i].classList.remove('e-grabbed');\n }\n }\n };\n ListBox.prototype.updateListItems = function (sourceElem, destElem) {\n var i = 0;\n destElem.innerHTML = '';\n while (i < sourceElem.childNodes.length) {\n destElem.appendChild(sourceElem.childNodes[i]);\n }\n };\n ListBox.prototype.removeSelected = function (listObj, elems) {\n if (listObj.selectionSettings.showCheckbox) {\n elems.forEach(function (ele) { ele.getElementsByClassName('e-frame')[0].classList.remove('e-check'); });\n }\n else {\n removeClass(elems, cssClass.selected);\n }\n };\n ListBox.prototype.getCurIdx = function (listObj, idx) {\n if (listObj.fields.groupBy) {\n idx -= [].slice.call(listObj.ulElement.children).slice(0, idx)\n .filter(function (ele) { return ele.classList.contains(cssClass.group); }).length;\n }\n return idx;\n };\n ListBox.prototype.getComponent = function (li) {\n var listObj;\n var ele = (this.element.tagName === 'EJS-LISTBOX' ? closest(li, '.e-listbox')\n : closest(li, '.e-listbox-wrapper') && closest(li, '.e-listbox-wrapper').querySelector('.e-listbox'));\n if (ele) {\n listObj = getComponent(ele, this.getModuleName());\n }\n return listObj;\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n ListBox.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n ListBox.prototype.listOption = function (dataSource, fields) {\n this.listCurrentOptions = _super.prototype.listOption.call(this, dataSource, fields);\n this.listCurrentOptions = extend({}, this.listCurrentOptions, { itemCreated: this.triggerBeforeItemRender.bind(this) }, true);\n this.notify('listoption', { module: 'CheckBoxSelection' });\n return this.listCurrentOptions;\n };\n ListBox.prototype.triggerBeforeItemRender = function (e) {\n e.item.setAttribute('tabindex', '-1');\n this.trigger('beforeItemRender', { element: e.item, item: e.curData });\n };\n ListBox.prototype.requiredModules = function () {\n var modules = [];\n if (this.selectionSettings.showCheckbox) {\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * This method is used to enable or disable the items in the ListBox based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.enableItems = function (items, enable, isValue) {\n var _this = this;\n if (enable === void 0) { enable = true; }\n var li;\n items.forEach(function (item) {\n var text = item;\n li = _this.findListElement(_this.list, 'li', 'data-value', isValue ? text : _this.getValueByText(text));\n if (!li) {\n return;\n }\n if (enable) {\n removeClass([li], cssClass.disabled);\n li.removeAttribute('aria-disabled');\n }\n else {\n addClass([li], cssClass.disabled);\n li.setAttribute('aria-disabled', 'true');\n }\n });\n };\n /**\n * Based on the state parameter, specified list item will be selected/deselected.\n *\n * @param {string[]} items - Array of text value of the item.\n * @param {boolean} state - Set `true`/`false` to select/un select the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.selectItems = function (items, state, isValue) {\n if (state === void 0) { state = true; }\n this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n *\n * @param {boolean} state - Set `true`/`false` to select/un select the entire list items.\n * @returns {void}\n */\n ListBox.prototype.selectAll = function (state) {\n if (state === void 0) { state = true; }\n this.selectAllItems(state);\n };\n /**\n * Adds a new item to the list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the list.\n * @returns {void}.\n */\n ListBox.prototype.addItems = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItems = function (items, itemIndex) {\n this.removeItem(items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItem = function (items, itemIndex) {\n var liCollections = [];\n var liElement = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n if (items) {\n items = (items instanceof Array ? items : [items]);\n var fields = this.fields;\n var dataValue = void 0;\n var objValue = void 0;\n var dupData = [];\n var itemIdx = void 0;\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var j = 0; j < items.length; j++) {\n if (items[j] instanceof Object) {\n dataValue = getValue(fields.value, items[j]);\n }\n else {\n dataValue = items[j].toString();\n }\n for (var i = 0, len = dupData.length; i < len; i++) {\n if (dupData[i] instanceof Object) {\n objValue = getValue(fields.value, dupData[i]);\n }\n else {\n objValue = dupData[i].toString();\n }\n if (objValue === dataValue) {\n itemIdx = this.getIndexByValue(dataValue);\n var idx = itemIdx === i ? itemIdx : i;\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.listData.splice(removeIdxes[k], 1);\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.jsonData.splice(removeIdxes[k], 1);\n }\n for (var k = removeLiIdxes.length - 1; k >= 0; k--) {\n this.updateLiCollection(removeLiIdxes[k]);\n }\n }\n else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.jsonData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (var i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n this.value = [];\n this.updateToolBarState();\n };\n /**\n * Gets the array of data Object that matches the given array of values.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns {object[]}.\n */\n ListBox.prototype.getDataByValues = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n };\n /**\n * Moves the given value(s) / selected value(s) upwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveUp = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) downwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveDown = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @param {number} index - Specifies the index.\n * @param {string} targetId - Specifies the target id.\n * @returns {void}\n */\n ListBox.prototype.moveTo = function (value, index, targetId) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n };\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n *\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n ListBox.prototype.moveAllTo = function (targetId, index) {\n if (this.listData.length > 0) {\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveAllData(this, tlistbox, false, index);\n }\n };\n /* eslint-disable */\n /**\n * Gets the updated dataSource in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Updated DataSource.\n */\n /* eslint-enable */\n ListBox.prototype.getDataList = function () {\n return this.jsonData;\n };\n /* eslint-disable */\n /**\n * Returns the sorted Data in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Sorted data\n */\n /* eslint-enable */\n ListBox.prototype.getSortedList = function () {\n var sortData;\n var tempData;\n sortData = tempData = this.sortedData;\n if (this.fields.groupBy) {\n sortData = [];\n for (var i = 0; i < tempData.length; i++) {\n if (tempData[i].isHeader) {\n continue;\n }\n sortData.push(tempData[i]);\n }\n }\n return sortData;\n };\n ListBox.prototype.getElemByValue = function (value) {\n var elem = [];\n for (var i = 0; i < value.length; i++) {\n elem.push(this.ulElement.querySelector('[data-value =\"' + value[i] + '\"]'));\n }\n return elem;\n };\n ListBox.prototype.updateLiCollection = function (index) {\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 1);\n this.liCollections = tempLi;\n };\n ListBox.prototype.selectAllItems = function (state, event) {\n var _this = this;\n [].slice.call(this.getItems()).forEach(function (li) {\n if (!li.classList.contains(cssClass.disabled)) {\n if (_this.selectionSettings.showCheckbox) {\n var ele = li.getElementsByClassName('e-check')[0];\n if ((!ele && state) || (ele && !state)) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (_this.maximumSelectionLength >= _this.list.querySelectorAll('.e-list-item span.e-check').length) {\n _this.checkMaxSelection();\n }\n }\n }\n else {\n if (state) {\n li.classList.add(cssClass.selected);\n }\n else {\n li.classList.remove(cssClass.selected);\n }\n }\n }\n });\n this.updateSelectedOptions();\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n var liEle = this.list.getElementsByTagName('li');\n var index = 0;\n if (state) {\n var _loop_1 = function () {\n var dataValue1 = this_1.getFormattedValue(liEle[index].getAttribute('data-value'));\n if (!this_1.value.some(function (e) { return e === dataValue1; })) {\n this_1.value.push(this_1.getFormattedValue(liEle[index].getAttribute('data-value')));\n }\n };\n var this_1 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_1();\n }\n }\n else {\n var _loop_2 = function () {\n var dataValue2 = this_2.getFormattedValue(liEle[index].getAttribute('data-value'));\n this_2.value = this_2.value.filter(function (e) { return e !== dataValue2; });\n };\n var this_2 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_2();\n }\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.triggerChange(this.getSelectedItems(), event);\n };\n ListBox.prototype.updateMainList = function () {\n var mainList = this.mainList.querySelectorAll('.e-list-item');\n var ulList = this.ulElement.querySelectorAll('.e-list-item');\n var mainCount = mainList.length;\n var ulEleCount = ulList.length;\n if (this.selectionSettings.showCheckbox || (document.querySelectorAll('ul').length > 1 || mainCount !== ulEleCount)) {\n var listindex = 0;\n var valueindex = 0;\n var count = 0;\n for (listindex; listindex < mainCount;) {\n if (this.value) {\n for (valueindex; valueindex < this.value.length; valueindex++) {\n if (mainList[listindex].getAttribute('data-value') === this.value[valueindex]) {\n count++;\n }\n }\n }\n if (!count && this.selectionSettings.showCheckbox) {\n mainList[listindex].getElementsByClassName('e-frame')[0].classList.remove('e-check');\n }\n if (document.querySelectorAll('ul').length > 1 && count && mainCount !== ulEleCount) {\n this.mainList.removeChild(this.mainList.getElementsByTagName('li')[listindex]);\n listindex = 0;\n }\n else {\n listindex++;\n }\n count = 0;\n valueindex = 0;\n }\n }\n };\n ListBox.prototype.wireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.add(this.list, 'click', this.clickHandler, this);\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusOutHandler, this);\n this.wireToolbarEvent();\n if (this.selectionSettings.showCheckbox) {\n EventHandler.remove(document, 'mousedown', this.checkBoxSelectionModule.onDocumentClick);\n }\n if (this.fields.groupBy || this.element.querySelector('select>optgroup')) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler, this);\n }\n };\n ListBox.prototype.wireToolbarEvent = function () {\n if (this.toolbarSettings.items.length) {\n EventHandler.add(this.getToolElem(), 'click', this.toolbarClickHandler, this);\n }\n };\n ListBox.prototype.unwireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.remove(this.list, 'click', this.clickHandler);\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusOutHandler);\n if (this.allowFiltering && this.clearFilterIconElem) {\n EventHandler.remove(this.clearFilterIconElem, 'click', this.clearText);\n }\n if (this.toolbarSettings.items.length) {\n EventHandler.remove(this.getToolElem(), 'click', this.toolbarClickHandler);\n }\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler);\n }\n };\n ListBox.prototype.clickHandler = function (e) {\n this.selectHandler(e);\n };\n ListBox.prototype.checkSelectAll = function () {\n var searchCount = 0;\n var liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (var i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n var len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n value: (searchCount === len) ? 'check' : (len === 0) ? 'uncheck' : 'indeterminate' });\n }\n };\n ListBox.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n var filterType = this.inputString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (dataType === null) {\n dataType = this.typeOfData(this.jsonData).typeof;\n }\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n ListBox.prototype.setFiltering = function () {\n var filterInputObj;\n if (this.initLoad || isNullOrUndefined(this.filterParent)) {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-label': 'search list item',\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n return filterInputObj;\n }\n };\n ListBox.prototype.filterWireEvents = function (filterElem) {\n if (filterElem) {\n this.filterInput = filterElem.querySelector('.e-input-filter');\n }\n this.clearFilterIconElem = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n if (this.clearFilterIconElem) {\n EventHandler.add(this.clearFilterIconElem, 'click', this.clearText, this);\n if (!filterElem) {\n this.clearFilterIconElem.style.visibility = 'hidden';\n }\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.KeyUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onKeyDown, this);\n };\n ListBox.prototype.selectHandler = function (e, isKey) {\n var isSelect = true;\n var currSelIdx;\n var li = closest(e.target, '.' + 'e-list-item');\n var selectedLi = [li];\n if (li && li.parentElement) {\n currSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n if (!this.selectionSettings.showCheckbox) {\n if ((e.ctrlKey || e.metaKey || Browser.isDevice) && this.isSelected(li)) {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n isSelect = false;\n }\n else if (!(this.selectionSettings.mode === 'Multiple' && (e.ctrlKey || e.metaKey || Browser.isDevice))) {\n this.getSelectedItems().forEach(function (ele) {\n ele.removeAttribute('aria-selected');\n });\n removeClass(this.getSelectedItems(), cssClass.selected);\n }\n }\n else {\n isSelect = !li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n if (e.shiftKey && !this.selectionSettings.showCheckbox && this.selectionSettings.mode !== 'Single') {\n selectedLi = [].slice.call(li.parentElement.children)\n .slice(Math.min(currSelIdx, this.prevSelIdx), Math.max(currSelIdx, this.prevSelIdx) + 1)\n .filter(function (ele) { return ele.classList.contains('e-list-item'); });\n }\n else {\n this.prevSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (isSelect) {\n if (!this.selectionSettings.showCheckbox) {\n addClass(selectedLi, cssClass.selected);\n }\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'true');\n });\n this.list.setAttribute('aria-activedescendant', li.id);\n }\n else {\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'false');\n });\n }\n if (!isKey && (this.maximumSelectionLength > (this.value && this.value.length) || !isSelect) &&\n (this.maximumSelectionLength >= (this.value && this.value.length) || !isSelect) &&\n !(this.maximumSelectionLength < (this.value && this.value.length))) {\n this.notify('updatelist', { li: li, e: e, module: 'listbox' });\n }\n if (this.allowFiltering && !isKey) {\n var liDataValue_1 = this.getFormattedValue(li.getAttribute('data-value'));\n if (!isSelect) {\n this.value = this.value.filter(function (value1) {\n return value1 !== liDataValue_1;\n });\n }\n else {\n var values = [];\n extend(values, this.value);\n values.push(liDataValue_1);\n this.value = values;\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.updateSelectedOptions();\n this.triggerChange(this.getSelectedItems(), e);\n if (this.list) {\n this.checkMaxSelection();\n }\n }\n };\n ListBox.prototype.triggerChange = function (selectedLis, event) {\n this.trigger('change', { elements: selectedLis, items: this.getDataByElements(selectedLis), value: this.value, event: event });\n };\n ListBox.prototype.getDataByElems = function (elems) {\n var data = [];\n for (var i = 0, len = elems.length; i < len; i++) {\n data.push(this.getDataByValue(this.getFormattedValue(elems[i].getAttribute('data-value'))));\n }\n return data;\n };\n ListBox.prototype.getDataByElements = function (elems) {\n var data = [];\n var value;\n var sIdx = 0;\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && item === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n return data;\n }\n return null;\n };\n ListBox.prototype.checkMaxSelection = function () {\n var limit = this.list.querySelectorAll('.e-list-item span.e-check').length;\n if (this.selectionSettings.showCheckbox) {\n var index = 0;\n var liCollElem = this.list.getElementsByClassName('e-list-item');\n for (index; index < liCollElem.length; index++) {\n if (!liCollElem[index].querySelector('.e-frame.e-check')) {\n if (limit === this.maximumSelectionLength) {\n liCollElem[index].classList.add('e-disable');\n }\n else if (liCollElem[index].classList.contains('e-disable')) {\n liCollElem[index].classList.remove('e-disable');\n }\n }\n }\n }\n };\n ListBox.prototype.toolbarClickHandler = function (e) {\n var btn = closest(e.target, 'button');\n if (btn) {\n this.toolbarAction = btn.getAttribute('data-value');\n if (btn.disabled) {\n return;\n }\n switch (this.toolbarAction) {\n case 'moveUp':\n this.moveUpDown(true);\n break;\n case 'moveDown':\n this.moveUpDown();\n break;\n case 'moveTo':\n this.moveItemTo();\n break;\n case 'moveFrom':\n this.moveItemFrom();\n break;\n case 'moveAllTo':\n this.moveAllItemTo();\n break;\n case 'moveAllFrom':\n this.moveAllItemFrom();\n break;\n default:\n this.trigger('actionBegin', { cancel: false, items: this.getDataByElems(this.getSelectedItems()),\n eventName: this.toolbarAction });\n break;\n }\n }\n };\n ListBox.prototype.moveUpDown = function (isUp, isKey, value) {\n var _this = this;\n var elems = this.getSelectedItems();\n if (value) {\n elems = value;\n }\n if (((isUp && this.isSelected(this.ulElement.firstElementChild))\n || (!isUp && this.isSelected(this.ulElement.lastElementChild))) && !value) {\n return;\n }\n var tempItems = this.getDataByElems(elems);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n this.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n (isUp ? elems : elems.reverse()).forEach(function (ele) {\n var jsonToIdx = Array.prototype.indexOf.call(_this.ulElement.querySelectorAll('.e-list-item'), ele);\n var idx = Array.prototype.indexOf.call(_this.ulElement.children, ele);\n moveTo(_this.ulElement, _this.ulElement, [idx], isUp ? idx - 1 : idx + 2);\n _this.changeData(idx, isUp ? idx - 1 : idx + 1, isUp ? jsonToIdx - 1 : jsonToIdx + 1, ele);\n });\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n elems[0].focus();\n if (!isKey && this.toolbarSettings.items.length) {\n this.getToolElem().querySelector('[data-value=' + (isUp ? 'moveUp' : 'moveDown') + ']').focus();\n }\n this.updateToolBarState();\n };\n ListBox.prototype.moveItemTo = function () {\n this.moveData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveItemFrom = function () {\n this.moveData(this.getScopedListBox(), this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBox} fListBox - Specifies the from listbox.\n * @param {ListBox} tListBox - Specifies the to listbox.\n * @param {boolean} isKey - Specifies the key.\n * @param {Element[]} value - Specifies the value.\n * @param {number} index - Specifies the index.\n * @returns {void}\n * @private\n */\n ListBox.prototype.moveData = function (fListBox, tListBox, isKey, value, index) {\n var idx = [];\n var dataIdx = [];\n var jsonIdx = [];\n var sortIdx = [];\n var listData = [].slice.call(fListBox.listData);\n var tListData = [].slice.call(tListBox.listData);\n var sortData = [].slice.call(fListBox.sortedData);\n var tSortData = [].slice.call(tListBox.sortedData);\n var fliCollections = [].slice.call(fListBox.liCollections);\n var dataLiIdx = [];\n var tliCollections = [].slice.call(tListBox.liCollections);\n var tempItems = [];\n var data = [];\n var elems = fListBox.getSelectedItems();\n if (value) {\n elems = value;\n }\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n fListBox.value = [];\n if (elems.length) {\n this.removeSelected(fListBox, elems);\n elems.forEach(function (ele) {\n idx.push(Array.prototype.indexOf.call(fListBox.ulElement.children, ele)); // update sortable elem\n // To update lb view data\n dataLiIdx.push(Array.prototype.indexOf.call(fListBox.ulElement.querySelectorAll('.e-list-item'), ele));\n // To update lb listdata data\n dataIdx.push(Array.prototype.indexOf.call(fListBox.listData, fListBox.getDataByElems([ele])[0]));\n // To update lb sorted data\n sortIdx.push(Array.prototype.indexOf.call(fListBox.sortedData, fListBox.getDataByElems([ele])[0]));\n // To update lb original data\n jsonIdx.push(Array.prototype.indexOf.call(fListBox.jsonData, fListBox.getDataByElems([ele])[0]));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach(function (i) {\n tempItems.push(fListBox.sortedData[i]);\n });\n }\n else {\n jsonIdx.forEach(function (i) {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n var rLiCollection_1 = [];\n dataLiIdx.sort(function (n1, n2) { return n1 - n2; }).reverse().forEach(function (i) {\n rLiCollection_1.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection_1.reverse()).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(rLiCollection_1.reverse());\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n dataIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n listData.splice(i, 1)[0];\n });\n sortIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach(function (i) {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n var sourceElem = fListBox.renderItems(listData, fListBox.fields);\n fListBox.updateListItems(sourceElem, fListBox.ulElement);\n }\n else {\n elems.forEach(function (ele) { detach(ele); });\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n fListBox.updateMainList();\n var tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = (index) ? index : tListData.length;\n for (var i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(tListData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n tListBox.setSelection();\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n };\n ListBox.prototype.selectNextList = function (elems, dataLiIdx, dataIdx, inst) {\n var childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n var ele;\n var liIdx;\n var validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n (inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected));\n }\n }\n };\n ListBox.prototype.moveAllItemTo = function () {\n this.moveAllData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveAllItemFrom = function () {\n this.moveAllData(this.getScopedListBox(), this);\n };\n ListBox.prototype.moveAllData = function (fListBox, tListBox, isKey, index) {\n var listData = [].slice.call(tListBox.listData);\n var jsonData = [].slice.call(tListBox.jsonData);\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n var tempItems = [].slice.call(fListBox.listData);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (isRefresh) {\n var noRecElem = fListBox.ulElement.childNodes[0];\n if (noRecElem) {\n fListBox.ulElement.removeChild(noRecElem);\n }\n }\n moveTo(fListBox.ulElement, tListBox.ulElement, \n // eslint-disable-next-line prefer-spread\n Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number), index);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n if (isKey) {\n this.list.focus();\n }\n index = (index) ? index : listData.length;\n for (var i = 0; i < fListBox.listData.length; i++) {\n listData.splice(index + i, 0, fListBox.listData[i]);\n }\n for (var i = 0; i < fListBox.jsonData.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[i]);\n }\n var fliCollections = [].slice.call(fListBox.liCollections);\n var tliCollections = [].slice.call(tListBox.liCollections);\n fListBox.liCollections = [];\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n fListBox.value = [];\n listData = listData\n .filter(function (data) { return data.isHeader !== true; });\n var sortedData = listData.filter(function (val) {\n return tListBox.jsonData.indexOf(val) === -1;\n });\n for (var i = 0; i < sortedData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tListBox.jsonData.splice(index + i, 0, sortedData[i]);\n }\n tListBox.listData = listData;\n if (fListBox.listData.length === fListBox.jsonData.length) {\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = [];\n }\n else if (fListBox.allowFiltering) {\n for (var i = 0; i < fListBox.listData.length; i++) {\n for (var j = 0; j < fListBox.jsonData.length; j++) {\n if (fListBox.listData[i] === fListBox.jsonData[j]) {\n fListBox.jsonData.splice(j, 1);\n }\n }\n }\n fListBox.listData = fListBox.sortedData = [];\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n };\n ListBox.prototype.changeData = function (fromIdx, toIdx, jsonToIdx, ele) {\n var listData = [].slice.call(this.listData);\n var jsonData = [].slice.call(this.jsonData);\n var sortData = [].slice.call(this.sortedData);\n var jsonIdx = Array.prototype.indexOf.call(this.jsonData, this.getDataByElems([ele])[0]);\n var sortIdx = Array.prototype.indexOf.call(this.sortedData, this.getDataByElems([ele])[0]);\n var liColl = [].slice.call(this.liCollections);\n listData.splice(toIdx, 0, listData.splice(fromIdx, 1)[0]);\n jsonData.splice(jsonToIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n sortData.splice(toIdx, 0, sortData.splice(sortIdx, 1)[0]);\n liColl.splice(toIdx, 0, liColl.splice(fromIdx, 1)[0]);\n this.listData = listData;\n this.jsonData = jsonData;\n this.liCollections = liColl;\n this.sortedData = sortData;\n };\n ListBox.prototype.getSelectedItems = function () {\n var ele = [];\n if (this.selectionSettings.showCheckbox) {\n [].slice.call(this.ulElement.getElementsByClassName('e-check')).forEach(function (cbox) {\n ele.push(closest(cbox, '.' + 'e-list-item'));\n });\n }\n else {\n ele = [].slice.call(this.ulElement.getElementsByClassName(cssClass.selected));\n }\n return ele;\n };\n ListBox.prototype.getScopedListBox = function () {\n var _this = this;\n var listObj;\n if (this.scope) {\n [].slice.call(document.querySelectorAll(this.scope)).forEach(function (ele) {\n if (getComponent(ele, _this.getModuleName())) {\n listObj = getComponent(ele, _this.getModuleName());\n }\n });\n }\n return listObj;\n };\n ListBox.prototype.getGrabbedItems = function (args) {\n var grabbItems = false;\n for (var i = 0; i < this.value.length; i++) {\n if (this.value[i] === this.getFormattedValue(args.target.getAttribute('data-value'))) {\n grabbItems = true;\n break;\n }\n }\n if (grabbItems) {\n for (var i = 0; i < this.value.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (this.value[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n liColl[j].classList.add('e-grabbed');\n }\n }\n }\n }\n var elems;\n if (this.isAngular) {\n elems = Array.prototype.slice.call(this.element.getElementsByClassName('e-list-parent')[0].querySelectorAll('.e-grabbed'));\n }\n else {\n elems = Array.prototype.slice.call(this.element.nextElementSibling.querySelectorAll('.e-grabbed'));\n }\n return elems;\n };\n ListBox.prototype.getDragArgs = function (args, isDragEnd) {\n var elems = this.getGrabbedItems(args);\n if (elems.length) {\n if (isDragEnd) {\n elems.push(args.target);\n }\n }\n else {\n elems = [args.target];\n }\n return { elements: elems, items: this.getDataByElems(elems) };\n };\n ListBox.prototype.onKeyDown = function (e) {\n this.keyDownHandler(e);\n e.stopPropagation();\n };\n ListBox.prototype.keyDownHandler = function (e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && !this.allowFiltering) {\n if (e.target && e.target.className.indexOf('e-edit-template') > -1) {\n return;\n }\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n });\n }\n else if (e.keyCode === 65 && e.ctrlKey) {\n this.selectAll();\n }\n else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n }\n else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n var listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n if (e.shiftKey) {\n this.moveAllData(this, listObj, true);\n }\n else {\n this.moveData(this, listObj, true);\n }\n }\n else {\n if (e.shiftKey) {\n this.moveAllData(listObj, this, true);\n }\n else {\n this.moveData(listObj, this, true);\n }\n }\n }\n else if (e.keyCode !== 37 && e.keyCode !== 39 && e.code !== 'KeyA') {\n this.upDownKeyHandler(e);\n }\n }\n else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n };\n ListBox.prototype.upDownKeyHandler = function (e) {\n var ul = this.ulElement;\n var defaultIdx = (e.keyCode === 40 || e.keyCode === 36) ? 0 : ul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n if (e.keyCode === 40) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n var cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey || !this.selectionSettings.showCheckbox && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n this.selectHandler({ target: ul.children[fliIdx], ctrlKey: e.ctrlKey, shiftKey: e.shiftKey }, true);\n }\n if (this.selectionSettings.showCheckbox && e.ctrlKey && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n var selectedidx = Array.prototype.indexOf.call(ul.children, fli);\n var sidx = e.code === 'Home' ? 0 : selectedidx;\n var eidx = e.code === 'Home' ? selectedidx : ul.children.length - 1;\n for (var i = sidx; i <= eidx; i++) {\n var item = ul.children[i];\n this.notify('updatelist', { li: item, e: {\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n }, module: 'listbox' });\n }\n }\n }\n };\n ListBox.prototype.KeyUp = function (e) {\n var _this = this;\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n this.isValidKey = (e.keyCode === 8) || (e.keyCode === 46) || this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n switch (e.keyCode) {\n default:\n if (this.allowFiltering) {\n var eventArgsData_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgsData_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgsData_1, function (args) {\n _this.isDataFetched = false;\n if (args.cancel || (_this.filterInput.value !== '' && _this.isFiltered)) {\n return;\n }\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n }\n if (!_this.isFiltered && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.dataUpdater(_this.jsonData, new Query(), _this.fields);\n }\n });\n }\n }\n }\n };\n /**\n * To filter the data from given data source by using query.\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}.\n */\n ListBox.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n };\n ListBox.prototype.filteringAction = function (dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n };\n ListBox.prototype.targetElement = function () {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var backCommand = true;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (backCommand) {\n this.remoteCustomValue = false;\n this.onActionComplete(list, this.jsonData);\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.selectionSettings.showCheckbox, e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n }\n };\n ListBox.prototype.focusOutHandler = function () {\n var ele = this.list.getElementsByClassName('e-focused')[0];\n if (ele) {\n ele.classList.remove('e-focused');\n }\n if (this.allowFiltering) {\n this.refreshClearIcon();\n }\n };\n ListBox.prototype.getValidIndex = function (cli, index, keyCode) {\n var cul = this.ulElement;\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n if (keyCode === 40 || keyCode === 36) {\n index++;\n }\n else {\n index--;\n }\n }\n if (index < 0 || index === cul.childElementCount) {\n return -1;\n }\n cli = cul.childNodes[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n };\n ListBox.prototype.updateSelectedOptions = function () {\n var _this = this;\n var selectedOptions = [];\n var values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach(function (ele) {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(_this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (var i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n }\n else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({ value: values }, true);\n }\n else {\n this.setProperties({ value: selectedOptions }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.clearSelection = function (values) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (this.selectionSettings.showCheckbox) {\n var dvalue_1;\n this.getSelectedItems().forEach(function (li) {\n dvalue_1 = _this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue_1) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.removeAttribute('aria-selected');\n }\n });\n }\n };\n ListBox.prototype.setSelection = function (values, isSelect, isText) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (isSelect === void 0) { isSelect = true; }\n if (isText === void 0) { isText = false; }\n var li;\n var liselect;\n if (values) {\n values.forEach(function (value) {\n var text;\n if (isText) {\n text = _this.getValueByText(value);\n }\n else {\n text = value;\n }\n if (typeof (text) === 'string') {\n text = text.split('\\\\').join('\\\\\\\\');\n }\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\n if (li) {\n if (_this.selectionSettings.showCheckbox) {\n liselect = li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n else {\n liselect = li.classList.contains('e-selected');\n }\n if (!isSelect && liselect || isSelect && !liselect && li) {\n if (_this.selectionSettings.showCheckbox) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n }\n else {\n if (isSelect) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n }\n else {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n }\n }\n }\n }\n });\n }\n this.updateSelectTag();\n };\n ListBox.prototype.updateSelectTag = function () {\n var ele = this.getSelectTag();\n var innerHTML = '';\n ele.innerHTML = '';\n if (this.value) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n innerHTML += '';\n }\n ele.innerHTML += innerHTML;\n }\n this.checkSelectAll();\n };\n ListBox.prototype.checkDisabledState = function (inst) {\n return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\n };\n ListBox.prototype.updateToolBarState = function () {\n var _this = this;\n if (this.toolbarSettings.items.length) {\n var listObj_1 = this.getScopedListBox();\n var wrap_1 = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n this.toolbarSettings.items.forEach(function (value) {\n var btn = wrap_1.querySelector('[data-value=\"' + value + '\"]');\n switch (value) {\n case 'moveAllTo':\n btn.disabled = _this.checkDisabledState(_this);\n break;\n case 'moveAllFrom':\n btn.disabled = _this.checkDisabledState(listObj_1);\n break;\n case 'moveFrom':\n btn.disabled = listObj_1.value && listObj_1.value.length ? false : true;\n break;\n case 'moveUp':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[0]) ? false : true;\n break;\n case 'moveDown':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[_this.ulElement.childElementCount - 1]) ? false : true;\n break;\n default:\n btn.disabled = _this.value && _this.value.length ? false : true;\n break;\n }\n });\n }\n };\n ListBox.prototype.setCheckboxPosition = function () {\n var listWrap = this.list;\n if (!this.initLoad && this.selectionSettings.checkboxPosition === 'Left') {\n listWrap.classList.remove('e-right');\n }\n if (this.selectionSettings.checkboxPosition === 'Right') {\n listWrap.classList.add('e-right');\n }\n };\n ListBox.prototype.showCheckbox = function (showCheckbox) {\n var index = 0;\n var liColl = this.list.lastElementChild.querySelectorAll('li');\n var liCollLen = this.list.lastElementChild.getElementsByClassName('e-list-item').length;\n if (showCheckbox) {\n this.ulElement = this.renderItems(this.listData, this.fields);\n this.mainList = this.ulElement;\n this.list.removeChild(this.list.getElementsByTagName('ul')[0]);\n this.list.appendChild(this.ulElement);\n if (this.selectionSettings.showSelectAll && !this.list.getElementsByClassName('e-selectall-parent')[0]) {\n var l10nShow = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nShow.getConstant('selectAllText');\n this.unSelectAllText = l10nShow.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n }\n else {\n if (this.list.getElementsByClassName('e-selectall-parent')[0]) {\n this.list.removeChild(this.list.getElementsByClassName('e-selectall-parent')[0]);\n }\n for (index; index < liCollLen; index++) {\n if (liColl[index].classList.contains('e-list-item')) {\n liColl[index].removeChild(liColl[index].getElementsByClassName('e-checkbox-wrapper')[0]);\n }\n if (liColl[index].hasAttribute('aria-selected')) {\n liColl[index].removeAttribute('aria-selected');\n }\n }\n this.mainList = this.ulElement;\n }\n this.value = [];\n };\n ListBox.prototype.isSelected = function (ele) {\n if (!isNullOrUndefined(ele)) {\n return ele.classList.contains(cssClass.selected) || ele.querySelector('.e-check') !== null;\n }\n else {\n return false;\n }\n };\n ListBox.prototype.getSelectTag = function () {\n return this.list.getElementsByClassName('e-hidden-select')[0];\n };\n ListBox.prototype.getToolElem = function () {\n return this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n };\n ListBox.prototype.formResetHandler = function () {\n this.value = this.initialSelectedOptions;\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - Module name\n */\n ListBox.prototype.getModuleName = function () {\n return 'listbox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ListBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ListBox.prototype.getLocaleName = function () {\n return 'listbox';\n };\n ListBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'inline-block';\n if (this.toolbarSettings.items.length) {\n this.list.parentElement.parentElement.insertBefore(this.list, this.list.parentElement);\n detach(this.list.nextElementSibling);\n }\n this.list.parentElement.insertBefore(this.element, this.list);\n }\n _super.prototype.destroy.call(this);\n this.enableRtlElements = [];\n this.liCollections = null;\n this.list = null;\n this.ulElement = null;\n this.mainList = null;\n this.spinner = null;\n this.rippleFun = null;\n if (this.itemTemplate) {\n this.clearTemplate();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBoxModel} newProp - Specifies the new properties.\n * @param {ListBoxModel} oldProp - Specifies the old properties.\n * @returns {void}\n * @private\n */\n ListBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\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([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.list.classList.add('e-rtl');\n }\n else {\n this.list.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n }\n else {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n }\n else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName())\n .tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName())\n .tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings': {\n var ele = void 0;\n var pos = newProp.toolbarSettings.position;\n var toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n }\n else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n if (oldProp.toolbarSettings && oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n }\n case 'selectionSettings': {\n var showSelectAll = newProp.selectionSettings.showSelectAll;\n var showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n var l10nSel = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n }\n case 'dataSource':\n this.isDataSourceUpdate = true;\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n };\n var ListBox_1;\n __decorate([\n Property('')\n ], ListBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], ListBox.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"scope\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dataBound\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate([\n NotifyPropertyChanges\n ], ListBox);\n return ListBox;\n}(DropDownBase));\nexport { ListBox };\nvar listBoxClasses = {\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n clearIcon: 'e-clear-icon'\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 { KeyboardEvents, compile, Property, EventHandler, Animation, formatUnit, append, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, detach, Event, Complex, addClass, removeClass, closest, isUndefined, getValue, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\n/**\n * The Mention component is used to list someone or something based on user input in textarea, input,\n * or any other editable element from which the user can select.\n */\nvar Mention = /** @class */ (function (_super) {\n __extends(Mention, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {MentionModel} options - Specifies the MentionComponent model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Mention(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {MentionModel} newProp - Returns the dynamic property value of the component.\n * @param {MentionModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.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 'minLength':\n this.minLength = newProp.minLength;\n break;\n case 'suffixText':\n this.suffixText = newProp.suffixText;\n break;\n case 'allowSpaces':\n this.allowSpaces = newProp.allowSpaces;\n break;\n case 'mentionChar':\n this.mentionChar = newProp.mentionChar;\n break;\n case 'showMentionChar':\n this.showMentionChar = newProp.showMentionChar;\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n }\n }\n };\n Mention.prototype.updateCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n this.setCssClass(newClass, [this.inputElement], oldClass);\n if (this.popupObj) {\n this.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n Mention.prototype.setCssClass = function (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 Mention.prototype.initializeData = function () {\n this.isSelected = false;\n this.isFiltered = false;\n this.beforePopupOpen = false;\n this.initRemoteRender = false;\n this.isListResetted = false;\n this.isPopupOpen = false;\n this.isCollided = false;\n this.lineBreak = false;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.preRender = function () {\n this.initializeData();\n _super.prototype.preRender.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.render = function () {\n var isSelector = typeof this.target === 'string';\n this.inputElement = !isNullOrUndefined(this.target) ?\n this.checkAndUpdateInternalComponent(isSelector\n ? document.querySelector(this.target)\n : this.target) : this.element;\n if (this.isContentEditable(this.inputElement)) {\n this.inputElement.setAttribute('contenteditable', 'true');\n addClass([this.inputElement], ['e-mention']);\n if (isNullOrUndefined(this.target)) {\n addClass([this.inputElement], ['e-editable-element']);\n }\n }\n this.inputElement.setAttribute('role', 'textbox');\n this.queryString = this.elementValue();\n this.wireEvent();\n };\n Mention.prototype.wireEvent = function () {\n EventHandler.add(this.inputElement, 'keyup', this.onKeyUp, this);\n this.bindCommonEvent();\n };\n Mention.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputElement, 'keyup', this.onKeyUp);\n this.unBindCommonEvent();\n };\n Mention.prototype.bindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.inputElement, {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.hideSpinner = function () {\n this.hideWaitingSpinner();\n };\n Mention.prototype.hideWaitingSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate) && !isNullOrUndefined(this.spinnerTemplateElement)) {\n detach(this.spinnerTemplateElement);\n }\n };\n Mention.prototype.checkAndUpdateInternalComponent = function (targetElement) {\n if (!this.isVue && targetElement.classList.contains('e-richtexteditor')) {\n return targetElement.querySelector('.e-content');\n }\n if (this.isVue && targetElement.nodeName === 'TEXTAREA' && targetElement.classList.contains('e-rte-hidden')) {\n var parentElement = targetElement.parentElement;\n if (parentElement && parentElement.classList.contains('e-richtexteditor')) {\n return parentElement.querySelector('.e-content');\n }\n }\n return targetElement;\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n Mention.prototype.showWaitingSpinner = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n if (isNullOrUndefined(this.spinnerTemplate) && isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.popupObj.element;\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate)) {\n this.setSpinnerTemplate();\n }\n }\n };\n Mention.prototype.keyActionHandler = function (e) {\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape' && e.action !== 'space') {\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'tab':\n if (this.isPopupOpen) {\n e.preventDefault();\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (li) {\n this.setSelection(li, e);\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n }\n break;\n case 'enter':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (this.popupObj && this.popupObj.element.contains(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, e, false, true);\n }\n }\n break;\n case 'escape':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n break;\n }\n };\n Mention.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (!isNullOrUndefined(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n }\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n var nextItem = isNullOrUndefined(this.activeIndex) ?\n this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n if (this.isPopupOpen) {\n e.preventDefault();\n }\n };\n Mention.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n Mention.prototype.unBindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n };\n Mention.prototype.onKeyUp = function (e) {\n var rangetextContent;\n this.isTyped = e.code !== 'Enter' && e.code !== 'Space' && e.code !== 'ArrowDown' && e.code !== 'ArrowUp' ? true : false;\n if (document.activeElement != this.inputElement) {\n this.inputElement.focus();\n }\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n rangetextContent = this.range.startContainer.textContent.split('');\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n // eslint-disable-next-line security/detect-non-literal-regexp\n var Regex = new RegExp(this.mentionChar, 'g');\n var charRegex = new RegExp('[a-zA-Z]', 'g');\n if (e.key === 'Shift' || e.keyCode === 37 || e.keyCode === 39) {\n return;\n }\n if ((!currentRange || !lastWordRange) || e.code === 'Enter' || e.keyCode === 27 ||\n (lastWordRange.match(Regex) && lastWordRange.match(Regex).length > 1) ||\n (this.isContentEditable(this.inputElement) && this.range.startContainer &&\n this.range.startContainer.previousElementSibling && this.range.startContainer.textContent.split('').length > 0 &&\n (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 ||\n this.range.startContainer.nodeType === 1))) {\n if (this.allowSpaces && currentRange && currentRange.trim() !== '' && charRegex.test(currentRange) && currentRange.indexOf(this.mentionChar) !== -1\n && !this.isMatchedText() && (currentRange.length > 1 && currentRange.replace(/\\u00A0/g, ' ').charAt(currentRange.length - 2) !== ' ') &&\n (this.list && this.list.querySelectorAll('ul').length > 0)) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.isPopupOpen && (!this.allowSpaces || !lastWordRange) && (e.code !== 'ArrowDown' && e.code !== 'ArrowUp')) {\n this.hidePopup();\n this.lineBreak = true;\n }\n return;\n }\n this.queryString = lastWordRange.replace(this.mentionChar, '');\n if (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) &&\n this.queryString !== '' && e.keyCode !== 38 && e.keyCode !== 40 && !this.lineBreak) {\n this.searchLists(e);\n if (!this.isPopupOpen && this.queryString.length >= this.minLength) {\n if (!this.isContentEditable(this.inputElement)) {\n this.showPopup();\n }\n else if (this.isContentEditable(this.inputElement) && this.range && this.range.startContainer !== this.inputElement && e.keyCode !== 9) {\n this.showPopup();\n }\n }\n }\n else if (lastWordRange.indexOf(this.mentionChar) === 0 && !this.isPopupOpen && e.keyCode !== 8 && (!this.popupObj ||\n (isNullOrUndefined(this.target) && !document.body.contains(this.popupObj.element) ||\n !isNullOrUndefined(this.target) && document.body.contains(this.popupObj.element)))) {\n if (this.initRemoteRender && this.list && this.list.classList.contains('e-nodata')) {\n this.searchLists(e);\n }\n this.resetList(this.dataSource, this.fields);\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n if (!this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40) {\n this.didPopupOpenByTypingInitialChar = true;\n this.showPopup();\n if (this.initRemoteRender && this.list.querySelectorAll('li').length === 0) {\n this.showWaitingSpinner();\n }\n this.lineBreak = false;\n }\n }\n else if (this.allowSpaces && this.queryString !== '' && currentRange && currentRange.trim() !== '' && currentRange.replace('\\u00a0', ' ').lastIndexOf(' ') < currentRange.length - 1 &&\n e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 8 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.queryString === '' && this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.searchLists(e);\n if (!this.isListResetted) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n this.isListResetted = false;\n };\n Mention.prototype.isMatchedText = function () {\n var isMatched = false;\n for (var i = 0; i < (this.liCollections && this.liCollections.length); i++) {\n if (this.getTextRange() &&\n this.getTextRange().substring(this.getTextRange().lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ').trim() === this.liCollections[i].getAttribute('data-value').toLowerCase()) {\n isMatched = true;\n }\n }\n return isMatched;\n };\n Mention.prototype.getCurrentRange = function () {\n this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);\n return this.range;\n };\n Mention.prototype.searchLists = function (e) {\n var _this = this;\n this.isDataFetched = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n }\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.queryString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction(_this.dataSource, null, _this.fields);\n }\n });\n };\n Mention.prototype.filterAction = function (dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString.length >= this.minLength) {\n this.resetList(dataSource, fields, query);\n this.isListResetted = true;\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.beforePopupOpen = false;\n }\n this.setDataIndex();\n this.renderReactTemplates();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isActive) {\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.inputElement.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var focusItem = ulElement.querySelector('.' + dropDownBaseClasses.li);\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.selected);\n this.selectedLI = focusItem;\n var value = this.getFormattedValue(focusItem.getAttribute('data-value'));\n this.selectEventCallback(focusItem, this.getDataByValue(value), value, true);\n }\n }\n };\n Mention.prototype.setDataIndex = function () {\n for (var i = 0; this.liCollections && i < this.liCollections.length; i++) {\n this.liCollections[i].setAttribute('data-index', i.toString());\n }\n };\n Mention.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.inputElement.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n Mention.prototype.elementValue = function () {\n if (!this.isContentEditable(this.inputElement)) {\n return this.inputElement.value.replace(this.mentionChar, '');\n }\n else {\n return this.inputElement.textContent.replace(this.mentionChar, '');\n }\n };\n Mention.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ?\n this.elementValue() : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.text) ? this.fields.text : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 25, checked the condition\n if (this.suggestionCount !== 25) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n Mention.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n Mention.prototype.getTextRange = function () {\n var text;\n if (!this.isContentEditable(this.inputElement)) {\n var component = this.inputElement;\n if (!isNullOrUndefined(component)) {\n var startPos = component.selectionStart;\n if (component.value && startPos >= 0) {\n text = component.value.substring(0, startPos);\n }\n }\n }\n else {\n if (this.range) {\n var selectedElem = this.range.startContainer;\n if (!isNullOrUndefined(selectedElem)) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.range.startOffset;\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n }\n return text;\n };\n Mention.prototype.getLastLetter = function (text) {\n if (isNullOrUndefined(text)) {\n return '';\n }\n var textValue = text.replace(/\\u00A0/g, ' ');\n var words = textValue.split(/\\s+/);\n var wordCnt = words.length - 1;\n return words[wordCnt].trim();\n };\n Mention.prototype.isContentEditable = function (element) {\n return element && element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n Mention.prototype.showPopup = function () {\n this.beforePopupOpen = true;\n if (document.activeElement != this.inputElement) {\n this.inputElement.focus();\n }\n this.queryString = this.didPopupOpenByTypingInitialChar ? this.queryString : '';\n this.didPopupOpenByTypingInitialChar = false;\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n if (!this.isTyped) {\n this.resetList(this.dataSource, this.fields);\n }\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n this.renderPopup();\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElementID });\n if (this.selectedElementID == null) {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n Mention.prototype.hidePopup = function (e) {\n this.removeSelection();\n this.closePopup(0, e);\n };\n Mention.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('closed', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && _this.popupObj) {\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n Mention.prototype.renderPopup = function () {\n var _this = this;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle_1;\n if (isNullOrUndefined(_this.target)) {\n popupEle_1 = _this.createElement('div', {\n id: _this.inputElement.id + '_popup', className: 'e-mention e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n }\n else {\n popupEle_1 = _this.element;\n if (_this.cssClass != null) {\n addClass([popupEle_1], _this.cssClass.split(' '));\n }\n }\n if (!isNullOrUndefined(_this.target)) {\n popupEle_1.id = _this.inputElement.id + '_popup';\n }\n _this.listHeight = formatUnit(_this.popupHeight);\n if (!isNullOrUndefined(_this.list.querySelector('li')) && !_this.initRemoteRender) {\n var li = _this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n _this.selectedLI = li;\n var value = _this.getFormattedValue(li.getAttribute('data-value'));\n _this.selectEventCallback(li, _this.getDataByValue(value), value, true);\n }\n }\n append([_this.list], popupEle_1);\n if (_this.inputElement.parentElement && _this.inputElement.parentElement.parentElement &&\n _this.inputElement.parentElement.parentElement.classList.contains('e-richtexteditor')) {\n if (popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {\n popupEle_1.firstElementChild.setAttribute('aria-owns', _this.inputElement.parentElement.parentElement.id);\n }\n }\n if ((!_this.popupObj || !document.body.contains(_this.popupObj.element)) ||\n !document.contains(popupEle_1) && isNullOrUndefined(_this.target)) {\n document.body.appendChild(popupEle_1);\n }\n var coordinates_1;\n popupEle_1.style.visibility = 'hidden';\n _this.setHeight(popupEle_1);\n var offsetValue = 0;\n var left = 0;\n _this.initializePopup(popupEle_1, offsetValue, left);\n _this.checkCollision(popupEle_1);\n popupEle_1.style.visibility = 'visible';\n addClass([popupEle_1], ['e-mention', 'e-popup', 'e-popup-close']);\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options', 'aria-activedescendant': _this.selectedElementID });\n if (_this.selectedElementID == null) {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('opened', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.renderReactTemplates();\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.inputElement : null);\n if (isNullOrUndefined(_this.getTriggerCharPosition())) {\n return;\n }\n coordinates_1 = _this.getCoordinates(_this.inputElement, _this.getTriggerCharPosition());\n if (!_this.isCollided) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(coordinates_1.left.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(_this.popupHeight.toString()));\n _this.isCollided = false;\n }\n popupEle_1.style.width = _this.popupWidth !== '100%' && !isNullOrUndefined(_this.popupWidth) ? formatUnit(_this.popupWidth) : 'auto';\n _this.setHeight(popupEle_1);\n popupEle_1.style.zIndex = _this.zIndex === 1000 ? getZindexPartial(popupEle_1).toString() : _this.zIndex.toString();\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n Mention.prototype.setHeight = function (popupEle) {\n if (this.popupHeight !== 'auto' && this.list) {\n this.list.style.maxHeight = (parseInt(this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n Mention.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'mention'))) {\n var coordinates = this.getCoordinates(this.inputElement, this.getTriggerCharPosition());\n var collision = isCollide(popupEle, null, coordinates.left, coordinates.top);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n this.isCollided = true;\n }\n this.popupObj.resolveCollision();\n }\n };\n Mention.prototype.getTriggerCharPosition = function () {\n var mostRecentTriggerCharPos;\n var currentRange = this.getTextRange();\n if (currentRange !== undefined && currentRange !== null) {\n mostRecentTriggerCharPos = 0;\n var idx = currentRange.lastIndexOf(this.mentionChar);\n if (idx >= mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n }\n }\n return mostRecentTriggerCharPos ? mostRecentTriggerCharPos : 0;\n };\n Mention.prototype.initializePopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputElement, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' }, actionOnScroll: 'hide',\n zIndex: this.zIndex,\n close: function () {\n _this.destroyPopup();\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n _this.setDataIndex();\n }\n });\n };\n Mention.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputElement.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n Mention.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.popupObj.destroy();\n if (isNullOrUndefined(this.target)) {\n detach(this.popupObj.element);\n }\n else {\n this.popupObj.element.innerHTML = '';\n this.popupObj.element.removeAttribute('style');\n this.popupObj.element.removeAttribute('aria-disabled');\n }\n };\n Mention.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id))) {\n this.hidePopup(e);\n }\n };\n Mention.prototype.getCoordinates = function (element, position) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var div;\n var span;\n var range;\n var globalRange;\n var coordinates;\n var computed;\n var rect;\n if (!this.isContentEditable(this.inputElement)) {\n div = this.createElement('div', { className: 'e-form-mirror-div' });\n document.body.appendChild(div);\n computed = getComputedStyle(element);\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties.forEach(function (prop) {\n // eslint-disable-next-line security/detect-object-injection\n div.style[prop] = computed[prop];\n });\n div.textContent = element.value.substring(0, position);\n if (this.inputElement.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n span = this.createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n rect = element.getBoundingClientRect();\n }\n else {\n var selectedNodePosition = this.getTriggerCharPosition();\n globalRange = this.range;\n range = document.createRange();\n if (this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1 && this.isTyped) {\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n this.isTyped = false;\n range.collapse(false);\n rect = range.getBoundingClientRect().top === 0 ? range.startContainer.getClientRects()[0] : range.getBoundingClientRect();\n }\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var width = 0;\n if (!isNullOrUndefined(range) && range.getBoundingClientRect().top === 0) {\n for (var i = 0; i < this.range.startContainer.childNodes.length; i++) {\n if (this.range.startContainer.childNodes[i].nodeType !== Node.TEXT_NODE && this.range.startContainer.childNodes[i].textContent.trim() !== '') {\n width += this.range.startContainer.childNodes[i].getClientRects()[0].width;\n }\n else if (this.range.startContainer.childNodes[i].textContent !== '') {\n var span_1 = document.createElement(\"span\");\n span_1.innerHTML = this.range.startContainer.childNodes[i].nodeValue;\n document.body.appendChild(span_1);\n var textNodeWidth = span_1.offsetWidth;\n document.body.removeChild(span_1);\n width += textNodeWidth;\n }\n }\n }\n if (!this.isContentEditable(this.inputElement)) {\n coordinates = {\n top: rect.top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) +\n parseInt(computed.fontSize, 10) + 3 - element.scrollTop - (this.isCollided ? 10 : 0),\n left: rect.left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth, 10)\n };\n document.body.removeChild(div);\n }\n else {\n coordinates = {\n top: rect.top + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rect.left + windowLeft + width\n };\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n Mention.prototype.updateValues = function () {\n var li = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, null);\n }\n };\n Mention.prototype.renderList = function () {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n Mention.prototype.wireListEvents = function () {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.isSelected = true;\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\n };\n Mention.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!preventSelect && !isNullOrUndefined(e) && !(e.action === \"down\" || e.action === \"up\")) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n _this.isSelected = false;\n _this.isSelectCancel = true;\n }\n else {\n _this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n Mention.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n Mention.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI)) {\n this.setScrollPosition(e);\n }\n if (e && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n if (isNullOrUndefined(e) || this.setValue(e)) {\n return;\n }\n };\n Mention.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n Mention.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n Mention.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop;\n }\n }\n };\n Mention.prototype.selectEventCallback = function (li, selectedData, value, selectLi) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n if (selectLi) {\n addClass([li], dropDownBaseClasses.selected);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n Mention.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.setValue = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate();\n }\n this.updateMentionValue(e);\n return true;\n }\n else {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate(e);\n }\n else {\n this.updateMentionValue(e);\n }\n return true;\n }\n };\n Mention.prototype.updateMentionValue = function (e) {\n var dataItem = this.getItemData();\n var textSuffix;\n var value;\n var endPos;\n var range;\n var globalRange;\n var selection = this.inputElement.ownerDocument.getSelection();\n var startPos = this.getTriggerCharPosition();\n textSuffix = typeof this.suffixText === 'string' ? this.suffixText : '';\n if (this.isSelectCancel) {\n this.isSelectCancel = false;\n return;\n }\n if (dataItem.text !== null) {\n value = this.mentionVal(dataItem.text);\n }\n if (!this.isContentEditable(this.inputElement)) {\n var myField = this.inputElement;\n var currentTriggerSnippet = this.getTextRange().substring(startPos + this.mentionChar.length, this.getTextRange().length);\n value += textSuffix;\n endPos = startPos + this.mentionChar.length;\n endPos += currentTriggerSnippet.length;\n myField.value = myField.value.substring(0, startPos) + value + myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + value.length;\n myField.selectionEnd = startPos + value.length;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n else {\n endPos = this.getTriggerCharPosition() + this.mentionChar.length;\n if (this.range && (this.range.startContainer.textContent.trim() !== this.mentionChar)) {\n endPos = this.range.endOffset;\n }\n globalRange = this.range;\n range = document.createRange();\n if (((this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) || this.getTextRange() && this.getTextRange().trim() === this.mentionChar)) {\n range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n }\n else {\n if (globalRange.commonAncestorContainer.textContent.trim() !== '' && !isNullOrUndefined(globalRange.commonAncestorContainer.textContent.trim()) && this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, globalRange.startOffset - 1);\n range.setEnd(globalRange.startContainer, globalRange.endOffset - 1);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n }\n this.isTyped = false;\n range.deleteContents();\n var element = this.createElement('div');\n element.innerHTML = value;\n var frag = document.createDocumentFragment();\n var node = void 0;\n var lastNode = void 0;\n // eslint-disable-next-line no-cond-assign\n while (node = element.firstChild) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n };\n Mention.prototype.mentionVal = function (value) {\n var showChar = this.showMentionChar ? this.mentionChar : '';\n if (!isNullOrUndefined(this.displayTemplate) && !isNullOrUndefined(this.displayTempElement)) {\n value = this.displayTempElement.innerHTML;\n }\n if (this.isContentEditable(this.inputElement)) {\n return '' + showChar + value + ''.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');\n }\n else {\n return showChar + value;\n }\n };\n Mention.prototype.setDisplayTemplate = function (e) {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['displayTemplate']);\n if (this.displayTempElement) {\n detach(this.displayTempElement);\n this.displayTempElement = null;\n }\n }\n if (!this.displayTempElement) {\n this.displayTempElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.displayTempElement.innerHTML = '';\n }\n compiledString = compile(this.displayTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var displayCompTemp = compiledString(this.itemData, this, 'displayTemplate', this.displayTemplateId, this.isStringTemplate, null, this.displayTempElement);\n if (displayCompTemp && displayCompTemp.length > 0) {\n append(displayCompTemp, this.displayTempElement);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n }\n else {\n this.renderTemplates(function () {\n _this.updateMentionValue(e);\n });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Mention.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\n };\n Mention.prototype.setSpinnerTemplate = function () {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['spinnerTemplate']);\n if (this.spinnerTemplateElement) {\n detach(this.spinnerTemplateElement);\n this.spinnerTemplateElement = null;\n }\n }\n if (!this.spinnerTemplateElement) {\n this.spinnerTemplateElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.spinnerTemplateElement.innerHTML = '';\n }\n compiledString = compile(this.spinnerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var spinnerCompTemp = compiledString(null, this, 'spinnerTemplate', this.spinnerTemplateId, this.isStringTemplate, null, this.spinnerTemplateElement);\n if (spinnerCompTemp && spinnerCompTemp.length > 0) {\n for (var i = 0; i < spinnerCompTemp.length; i++) {\n this.spinnerTemplateElement.appendChild(spinnerCompTemp[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n this.popupObj.element.appendChild(this.spinnerTemplateElement);\n }\n else {\n this.renderTemplates(function () {\n _this.popupObj.element.appendChild(_this.spinnerTemplateElement);\n });\n }\n };\n Mention.prototype.onChangeEvent = function (eve) {\n this.isSelected = false;\n var items = this.detachMentionChanges(this.itemData);\n var preItems;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.item.innerHTML,\n element: this.inputElement\n };\n this.trigger('change', eventArgs);\n };\n Mention.prototype.detachMentionChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n Mention.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n Mention.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n Mention.prototype.setHover = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n Mention.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n Mention.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n Mention.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n */\n Mention.prototype.search = function (text, positionX, positionY) {\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n if ((this.ignoreCase && (text === lastWordRange || text === lastWordRange.toLowerCase()))\n || !this.ignoreCase && text === lastWordRange) {\n this.resetList(this.dataSource, this.fields);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n return;\n }\n if (isNullOrUndefined(this.list)) {\n this.renderList();\n this.renderPopup();\n }\n else {\n this.showPopup();\n }\n this.popupObj.element.style.left = formatUnit(positionX);\n this.popupObj.element.style.top = formatUnit(positionY);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Mention.prototype.destroy = function () {\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.inputElement && !this.inputElement.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n _super.prototype.destroy.call(this);\n };\n Mention.prototype.getLocaleName = function () {\n return 'mention';\n };\n Mention.prototype.getNgDirective = function () {\n return 'EJS-MENTION';\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n Mention.prototype.getModuleName = function () {\n return 'mention';\n };\n __decorate([\n Property(null)\n ], Mention.prototype, \"cssClass\", void 0);\n __decorate([\n Property('@')\n ], Mention.prototype, \"mentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"showMentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"allowSpaces\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"suffixText\", void 0);\n __decorate([\n Property(25)\n ], Mention.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property(0)\n ], Mention.prototype, \"minLength\", void 0);\n __decorate([\n Property('None')\n ], Mention.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], Mention.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"highlight\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"locale\", void 0);\n __decorate([\n Property('auto')\n ], Mention.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('300px')\n ], Mention.prototype, \"popupHeight\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"displayTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], Mention.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"spinnerTemplate\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"target\", void 0);\n __decorate([\n Property([])\n ], Mention.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"query\", void 0);\n __decorate([\n Property('Contains')\n ], Mention.prototype, \"filterType\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], Mention.prototype, \"fields\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"opened\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"closed\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"destroyed\", void 0);\n Mention = __decorate([\n NotifyPropertyChanges\n ], Mention);\n return Mention;\n}(DropDownBase));\nexport { Mention };\n","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshPopup();\n this.parent.refreshListItems(null);\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlurHandler = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n // eslint-disable-next-line max-len\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]'))\n && !isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlurHandler(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') &&\n (document.activeElement === this.filterInput);\n }\n if (!isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlurHandler();\n }\n else {\n this.parent.onBlurHandler(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n var l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle_1 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n var activeListItems = this.parent.ulElement.querySelectorAll('li.e-active');\n activeListItems.forEach(function (item) {\n ulEle_1.appendChild(item);\n });\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n prepend([ulEle_1], this.parent.list);\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n _this.loadTemplate();\n }\n }\n });\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n var customValue = this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n return this.getQuery(this.query).where(predicate);\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n return;\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox') {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var field = fields ? fields : this.fields;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem);\n }\n else {\n setValue(field.value, value, dataItem);\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.pageDownSelection = function (steps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome) {\n this.removeFocus();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n if (!document.activeElement.classList.contains(FILTERINPUT)) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.moveByList = function (position) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var temp = -1;\n if (elements.length) {\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n this.updateMainList(true, value, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(value);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, value);\n _this.removeChip(value);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n _this.updateListSelectEventCallback(value, element, eve);\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n chipContent.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = data;\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative', position: { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper, collision: { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n for (var temp = 0; temp < elements.length; temp++) {\n this.header.appendChild(elements[temp]);\n }\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n for (var temp = 0; temp < elements.length; temp++) {\n this.footer.appendChild(elements[temp]);\n }\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n this.listData = this.mainData;\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var listValue = this.findListElement(((!isNullOrUndefined(this.mainList)) ? this.mainList : this.ulElement), 'li', 'data-value', this.value[index]);\n if (isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(this.value[index]);\n }\n else {\n temp = this.value[index];\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML += '';\n }\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = wrapperData;\n }\n else {\n wrapperType.innerText = SanitizeHtmlHelper.sanitize(wrapperData);\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n this.updateWrapperText(this.viewWrapper, data);\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if (li && li.length) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }, 0);\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', this.value[i]);\n if (!checkEle) {\n valuecheck.push(this.value[i]);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n _super.prototype.render.call(_this, e);\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n valueCol.push(opt.getAttribute('value'));\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nvar Save = /** @class */ (function () {\n /**\n * Initialize new instance of {save}\n */\n function Save() {\n // tslint:disable\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n Save.save = function (fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n var extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n var mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n var downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n };\n Save.saveInternal = function (fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n var dataUrl_1 = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n downloadLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n dataUrl_1 = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n var url = window.URL.createObjectURL(buffer);\n var isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n var reader_1 = new FileReader();\n reader_1.onloadend = function () {\n var isPopupBlocked = window.open(reader_1.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader_1.result;\n }\n };\n reader_1.readAsDataURL(buffer);\n }\n }\n };\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n Save.getMimeType = function (extension) {\n var mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n };\n return Save;\n}());\nexport { Save };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { colGroupRefresh, columnWidthChanged, scroll, columnVisibilityChanged, refreshFooterRenderer } from '../base/constant';\nimport { ContentRender } from './content-renderer';\nimport { RowRenderer } from './row-renderer';\nimport { SummaryModelGenerator } from '../services/summary-model-generator';\nimport { renderMovable, calculateAggregate, iterateExtend, addRemoveEventListener } from '../base/util';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * Footer module is used to render grid content\n *\n * @hidden\n */\nvar FooterRenderer = /** @class */ (function (_super) {\n __extends(FooterRenderer, _super);\n function FooterRenderer(gridModule, serviceLocator) {\n var _this = _super.call(this, gridModule, serviceLocator) || this;\n _this.aggregates = {};\n _this.parent = gridModule;\n _this.locator = serviceLocator;\n _this.modelGenerator = new SummaryModelGenerator(_this.parent);\n _this.addEventListener();\n return _this;\n }\n /**\n * The function is used to render grid footer div\n *\n * @returns {void}\n */\n FooterRenderer.prototype.renderPanel = function () {\n var div = this.parent.createElement('div', { className: literals.gridFooter });\n var innerDiv = this.parent.createElement('div', { className: 'e-summarycontent' });\n var movableContent = innerDiv;\n if (this.parent.isFrozenGrid()) {\n var fDiv = this.parent.createElement('div', { className: 'e-frozenfootercontent e-frozen-left-footercontent' });\n var mDiv = this.parent.createElement('div', { className: 'e-movablefootercontent' });\n var frDiv = this.parent.createElement('div', { className: 'e-frozenfootercontent e-frozen-right-footercontent' });\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n innerDiv.appendChild(fDiv);\n this.frozenContent = fDiv;\n }\n innerDiv.appendChild(mDiv);\n this.movableContent = mDiv;\n movableContent = mDiv;\n if (this.parent.getFrozenRightColumnsCount()) {\n innerDiv.appendChild(frDiv);\n this.frozenRightContent = frDiv;\n }\n }\n if (Browser.isDevice) {\n movableContent.style.overflowX = 'scroll';\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (this.parent.getPager() != null) {\n this.parent.element.insertBefore(div, this.parent.getPager());\n }\n else {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid footer table\n *\n * @returns {void}\n */\n FooterRenderer.prototype.renderTable = function () {\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var innerDiv = this.createContentTable('_footer_table');\n var table = innerDiv.querySelector('.' + literals.table);\n var tFoot = this.parent.createElement('tfoot');\n table.appendChild(tFoot);\n if (this.parent.isFrozenGrid()) {\n var freezeTable = table.cloneNode(true);\n var frTable = table.cloneNode(true);\n if (frzCols) {\n this.frozenContent.appendChild(freezeTable);\n this.freezeTable = freezeTable;\n }\n if (this.parent.getFrozenRightColumnsCount()) {\n remove(frTable.querySelector(literals.colGroup));\n var hdr = this.parent.getHeaderContent().querySelector('.e-frozen-right-header');\n var frCol = (hdr.querySelector(literals.colGroup).cloneNode(true));\n frTable.insertBefore(frCol, frTable.querySelector(literals.tbody));\n this.frozenRightContent.appendChild(frTable);\n this.frTable = frTable;\n }\n this.movableContent.appendChild(table);\n remove(table.querySelector(literals.colGroup));\n var colGroup = ((this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n table.insertBefore(colGroup, table.querySelector(literals.tbody));\n this.setColGroup(colGroup);\n }\n this.setTable(table);\n };\n FooterRenderer.prototype.renderSummaryContent = function (e, table, cStart, cEnd) {\n var input = this.parent.dataSource instanceof Array ? !this.parent.getDataModule().isRemote() &&\n this.parent.parentDetails ? this.getData() : this.parent.dataSource : this.parent.currentViewData;\n var summaries = this.modelGenerator.getData();\n var dummies = isNullOrUndefined(cStart) ? this.modelGenerator.getColumns() :\n this.modelGenerator.getColumns(cStart, cEnd);\n // eslint-disable-next-line max-len\n var rows = isNullOrUndefined(cStart) ? this.modelGenerator.generateRows(input, e || this.aggregates) :\n this.modelGenerator.generateRows(input, e || this.aggregates, cStart, cEnd);\n var fragment = document.createDocumentFragment();\n var rowrenderer = new RowRenderer(this.locator, null, this.parent);\n rowrenderer.element = this.parent.createElement('TR', { className: 'e-summaryrow' });\n for (var srow = 0, len = summaries.length; srow < len; srow++) {\n var row = rows[parseInt(srow.toString(), 10)];\n if (!row) {\n continue;\n }\n var tr = rowrenderer.render(row, dummies);\n fragment.appendChild(tr);\n }\n table.tFoot.appendChild(fragment);\n this.aggregates = !isNullOrUndefined(e) ? e : this.aggregates;\n };\n FooterRenderer.prototype.refresh = function (e) {\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (this.parent.isFrozenGrid()) {\n remove(this.getPanel());\n this.renderPanel();\n this.renderTable();\n if (frzCols) {\n this.freezeTable.tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.freezeTable, 0, frzCols);\n }\n }\n this.getTable().tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.getTable(), frzCols, right ? frzCols + movable : undefined);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.frTable.tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.frTable, frzCols + movable, frzCols + movable + right);\n var movableLastCell = [].slice.call(this.getTable().getElementsByClassName('e-lastsummarycell'));\n if (movableLastCell.length) {\n for (var i = 0; i < movableLastCell.length; i++) {\n movableLastCell[parseInt(i.toString(), 10)].style.borderRight = '0px';\n }\n }\n }\n // check freeze content have no row case\n if (this.parent.isFrozenGrid()) {\n var movableCnt = [].slice.call(this.parent.element.querySelector('.e-movablefootercontent')\n .getElementsByClassName('e-summaryrow'));\n var frozenCnt = void 0;\n if (frzCols) {\n frozenCnt = [].slice.call(this.parent.element.querySelector('.e-frozen-left-footercontent')\n .getElementsByClassName('e-summaryrow'));\n this.refreshHeight(frozenCnt, movableCnt);\n var frozenDiv = this.frozenContent;\n if (!frozenDiv.offsetHeight) {\n frozenDiv.style.height = this.getTable().offsetHeight + 'px';\n }\n }\n if (right) {\n var frCnt = [].slice.call(this.parent.element.querySelector('.e-frozen-right-footercontent')\n .getElementsByClassName('e-summaryrow'));\n this.refreshHeight(frCnt, movableCnt);\n if (frozenCnt) {\n this.refreshHeight(frCnt, frozenCnt);\n }\n var frDiv = this.frTable;\n if (!frDiv.offsetHeight) {\n frDiv.style.height = this.getTable().offsetHeight + 'px';\n }\n }\n if (this.parent.allowResizing) {\n this.updateFooterTableWidth(this.getTable());\n }\n }\n if (isNullOrUndefined(e) && this.parent.isAutoFitColumns) {\n this.parent.autoFitColumns();\n }\n this.onScroll();\n };\n FooterRenderer.prototype.refreshHeight = function (frozenCnt, movableCnt) {\n for (var i = 0; i < frozenCnt.length; i++) {\n var frozenHeight = frozenCnt[parseInt(i.toString(), 10)].getBoundingClientRect().height;\n var movableHeight = movableCnt[parseInt(i.toString(), 10)].getBoundingClientRect().height;\n if (frozenHeight < movableHeight) {\n frozenCnt[parseInt(i.toString(), 10)].classList.remove('e-hide');\n frozenCnt[parseInt(i.toString(), 10)].style.height = movableHeight + 'px';\n }\n else if (frozenHeight > movableHeight) {\n movableCnt[parseInt(i.toString(), 10)].classList.remove('e-hide');\n movableCnt[parseInt(i.toString(), 10)].style.height = frozenHeight + 'px';\n }\n }\n };\n FooterRenderer.prototype.refreshCol = function () {\n // frozen table\n var mheaderCol;\n var fheaderCol = mheaderCol = this.parent.element.querySelector('.' + literals.gridHeader).querySelector(literals.colGroup).cloneNode(true);\n if (this.parent.getFrozenColumns()) {\n // eslint-disable-next-line max-len\n var isXaxis = this.parent.enableColumnVirtualization && this.parent.contentModule.isXaxis();\n if (isXaxis) {\n mheaderCol = this.parent.getMovableVirtualHeader().querySelector(literals.colGroup).cloneNode(true);\n }\n else {\n mheaderCol = renderMovable(fheaderCol, this.parent.getFrozenColumns(), this.parent);\n this.freezeTable.replaceChild(fheaderCol, this.freezeTable.querySelector(literals.colGroup));\n }\n }\n this.getTable().replaceChild(mheaderCol, this.getColGroup());\n this.setColGroup(mheaderCol);\n };\n FooterRenderer.prototype.onWidthChange = function (args) {\n this.getColFromIndex(args.index).style.width = formatUnit(args.width);\n if (this.parent.allowResizing && args.module === 'resize') {\n this.updateFooterTableWidth(this.getTable());\n }\n };\n FooterRenderer.prototype.onScroll = function (e) {\n if (e === void 0) { e = {\n left: this.parent.isFrozenGrid() ? this.parent.getContent().querySelector('.' + literals.movableContent).scrollLeft :\n this.parent.getContent().firstChild.scrollLeft\n }; }\n this.getTable().parentElement.scrollLeft = e.left;\n };\n FooterRenderer.prototype.getColFromIndex = function (index) {\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var isDrag = this.parent.isRowDragable() && !(this.parent.getFrozenMode() === 'Right') ? 1 : 0;\n if (left && index < (left + isDrag)) {\n return this.freezeTable.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n else if (right && (index >= (left + movable + isDrag))) {\n return this.frTable.querySelector(literals.colGroup).children[index - (left ? (left + movable + isDrag) :\n (left + movable))];\n }\n return this.getColGroup().children[index - (left ? (left + isDrag) : left)];\n };\n FooterRenderer.prototype.columnVisibilityChanged = function () {\n this.refresh();\n };\n FooterRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: colGroupRefresh, handler: this.refreshCol },\n { event: columnWidthChanged, handler: this.onWidthChange },\n { event: scroll, handler: this.onScroll },\n { event: columnVisibilityChanged, handler: this.columnVisibilityChanged },\n { event: refreshFooterRenderer, handler: this.refreshFooterRenderer }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FooterRenderer.prototype.removeEventListener = function () {\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FooterRenderer.prototype.updateFooterTableWidth = function (tFoot) {\n var tHead = this.parent.getHeaderTable();\n if (tHead && tFoot) {\n tFoot.style.width = tHead.style.width;\n }\n };\n FooterRenderer.prototype.refreshFooterRenderer = function (editedData) {\n var aggregates = this.onAggregates(editedData);\n this.refresh(aggregates);\n };\n FooterRenderer.prototype.getIndexByKey = function (data, ds) {\n var key = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < ds.length; i++) {\n if (ds[parseInt(i.toString(), 10)][\"\" + key] === data[\"\" + key]) {\n return i;\n }\n }\n return -1;\n };\n FooterRenderer.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n FooterRenderer.prototype.onAggregates = function (editedData) {\n editedData = editedData instanceof Array ? editedData : [];\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n var dataSource = [];\n var isModified = false;\n var batchChanges = {};\n var gridData = 'dataSource';\n var isFiltered = false;\n if (!this.parent.renderModule.data.isRemote() && this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n isFiltered = true;\n }\n var currentViewData = this.parent.dataSource instanceof Array ?\n (isFiltered ? this.parent.getFilteredRecords() : this.parent.dataSource) : (this.parent.dataSource[\"\" + gridData].json.length ?\n this.parent.dataSource[\"\" + gridData].json : this.parent.getCurrentViewRecords());\n if (this.parent.parentDetails && !this.parent.getDataModule().isRemote()) {\n currentViewData = this.getData();\n }\n if (this.parent.editModule) {\n batchChanges = this.parent.editModule.getBatchChanges();\n }\n if (Object.keys(batchChanges).length) {\n for (var i = 0; i < currentViewData.length; i++) {\n isModified = false;\n // eslint-disable-next-line max-len\n if (batchChanges[literals.changedRecords].length && this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[literals.changedRecords]) > -1) {\n isModified = true;\n // eslint-disable-next-line max-len\n dataSource.push(batchChanges[literals.changedRecords][this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[literals.changedRecords])]);\n }\n // eslint-disable-next-line max-len\n if (batchChanges[literals.deletedRecords].length && this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[literals.deletedRecords]) > -1) {\n isModified = true;\n }\n else if (!isModified) {\n dataSource.push(currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (batchChanges[literals.addedRecords].length) {\n for (var i = 0; i < batchChanges[literals.addedRecords].length; i++) {\n dataSource.push(batchChanges[literals.addedRecords][parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n if (editedData.length) {\n var data = iterateExtend(currentViewData);\n dataSource = data.map(function (item) {\n var idVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = editedData.some(function (cItem) {\n value = cItem;\n return idVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n }\n else {\n dataSource = currentViewData;\n }\n }\n var eData = editedData;\n if ((eData.type && eData.type === 'cancel')) {\n dataSource = currentViewData;\n }\n var aggregate = {};\n var agrVal;\n var aggregateRows = this.parent.aggregates;\n for (var i = 0; i < aggregateRows.length; i++) {\n for (var j = 0; j < aggregateRows[parseInt(i.toString(), 10)].columns.length; j++) {\n var data = [];\n var type = aggregateRows[parseInt(i.toString(), 10)]\n .columns[parseInt(j.toString(), 10)].type.toString();\n data = dataSource;\n agrVal = calculateAggregate(type, data, aggregateRows[parseInt(i.toString(), 10)]\n .columns[parseInt(j.toString(), 10)], this.parent);\n aggregate[aggregateRows[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].field + ' - ' + type.toLowerCase()] = agrVal;\n }\n }\n var result = {\n result: dataSource,\n count: dataSource.length,\n aggregates: aggregate\n };\n return result;\n };\n return FooterRenderer;\n}(ContentRender));\nexport { FooterRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { refreshAggregateCell } from '../base/constant';\n/**\n * SummaryCellRenderer class which responsible for building summary cell content.\n *\n * @hidden\n */\nvar SummaryCellRenderer = /** @class */ (function (_super) {\n __extends(SummaryCellRenderer, _super);\n function SummaryCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-summarycell', attrs: { tabindex: '-1' } });\n return _this;\n }\n SummaryCellRenderer.prototype.getValue = function (field, data, column) {\n var key = !isNullOrUndefined(column.type) ?\n column.field + ' - ' + (typeof column.type === 'string' ? column.type.toLowerCase() : '') : column.columnName;\n return data[column.columnName] ? data[column.columnName][\"\" + key] : '';\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n SummaryCellRenderer.prototype.evaluate = function (node, cell, data, attributes) {\n var column = cell.column;\n this.parent.on(refreshAggregateCell, this.refreshWithAggregate(node, cell), this);\n if (!(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)) {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.style.display = 'none';\n }\n return true;\n }\n else {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.classList.add('e-lastsummarycell');\n }\n }\n var tempObj = column.getTemplate(cell.cellType);\n var tempID = '';\n var gColumn = this.parent.getColumnByField(data[column.columnName].field);\n if (!isNullOrUndefined(gColumn)) {\n data[column.columnName].headerText = gColumn.headerText;\n if (gColumn.isForeignColumn()) {\n var fData = gColumn.columnData.filter(function (e) {\n return e[gColumn.foreignKeyField] === data[column.columnName].key;\n })[0];\n if (fData) {\n data[column.columnName].foreignKey = fData[gColumn.foreignKeyValue];\n }\n }\n }\n var isReactCompiler = this.parent.isReact && (column.footerTemplate ?\n typeof (column.footerTemplate) !== 'string' : column.groupFooterTemplate ? typeof (column.groupFooterTemplate) !== 'string'\n : column.groupCaptionTemplate ? typeof (column.groupCaptionTemplate) !== 'string' : false);\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var prop = data[column.columnName];\n if (tempObj.property === 'groupCaptionTemplate' || tempObj.property === 'groupFooterTemplate') {\n var groupKey = 'groupKey';\n var key = 'key';\n prop[\"\" + groupKey] = prop[\"\" + key];\n }\n tempObj.fn(prop, this.parent, tempObj.property, tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node, tempObj.fn(data[column.columnName], this.parent, tempObj.property, tempID));\n }\n return false;\n };\n SummaryCellRenderer.prototype.refreshWithAggregate = function (node, cell) {\n var _this = this;\n var cellNode = cell;\n return function (args) {\n var cell = cellNode;\n var field = cell.column.columnName ? cell.column.columnName : null;\n var curCell = (!isNullOrUndefined(field) ? args.cells.filter(function (cell) {\n return cell.column.columnName === field;\n })[0] : null);\n if (node.parentElement && node.parentElement.getAttribute('data-uid') === args.dataUid && field &&\n field === curCell.column.columnName) {\n _this.refreshTD(node, curCell, args.data);\n }\n };\n };\n return SummaryCellRenderer;\n}(CellRenderer));\nexport { SummaryCellRenderer };\n","import { remove, extend, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, addClass } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { uiUpdate, initialEnd, dataReady, modelChanged, refreshAggregates, refreshFooterRenderer, groupAggregates, destroy } from '../base/constant';\nimport { FooterRenderer } from '../renderer/footer-renderer';\nimport { SummaryCellRenderer } from '../renderer/summary-cell-renderer';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport * as literals from '../base/string-literals';\n/**\n * Summary Action controller.\n */\nvar Aggregate = /** @class */ (function () {\n function Aggregate(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n Aggregate.prototype.getModuleName = function () {\n return 'aggregate';\n };\n Aggregate.prototype.initiateRender = function () {\n var _this = this;\n var cellFac = this.locator.getService('cellRendererFactory');\n var instance = new SummaryCellRenderer(this.parent, this.locator);\n var type = [CellType.Summary, CellType.CaptionSummary, CellType.GroupSummary];\n for (var i = 0; i < type.length; i++) {\n cellFac.addCellRenderer(type[parseInt(i.toString(), 10)], instance);\n }\n this.footerRenderer = new FooterRenderer(this.parent, this.locator);\n this.footerRenderer.renderPanel();\n this.footerRenderer.renderTable();\n var footerContent = this.footerRenderer.getPanel();\n if (this.parent.element.scrollHeight >= this.parent.getHeight(this.parent.height)\n && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n this.locator.register('footerRenderer', this.footerRenderer);\n var fn = function () {\n _this.prepareSummaryInfo();\n _this.parent.off(dataReady, fn);\n };\n this.parent.on(dataReady, fn, this);\n this.parent.on(dataReady, this.footerRenderer.refresh, this.footerRenderer);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Aggregate.prototype.prepareSummaryInfo = function () {\n var _this = this;\n summaryIterator(this.parent.aggregates, function (column) {\n var cFormat = getValue('customFormat', column);\n if (!isNullOrUndefined(cFormat)) {\n column.setPropertiesSilent({ format: cFormat });\n }\n if (typeof (column.format) === 'object') {\n var valueFormatter = new ValueFormatter();\n column.setFormatter(valueFormatter.getFormatFunction(extend({}, column.format)));\n }\n else if (typeof (column.format) === 'string') {\n var fmtr = _this.locator.getService('valueFormatter');\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n }\n column.setPropertiesSilent({ columnName: column.columnName || column.field });\n });\n };\n Aggregate.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (isNullOrUndefined(this.footerRenderer)) {\n this.initiateRender();\n }\n this.prepareSummaryInfo();\n this.footerRenderer.refresh();\n var cModel = new CaptionSummaryModelGenerator(this.parent);\n var gModel = new GroupSummaryModelGenerator(this.parent);\n if (gModel.getData().length !== 0 || !cModel.isEmpty()) {\n this.parent.notify(modelChanged, {});\n }\n };\n Aggregate.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.initiateRender, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(refreshAggregates, this.refresh, this);\n this.parent.on(destroy, this.destroy, this);\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.footerRenderer.removeEventListener();\n this.parent.off(initialEnd, this.initiateRender);\n this.parent.off(dataReady, this.footerRenderer.refresh);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(refreshAggregates, this.refresh);\n this.parent.off(destroy, this.destroy);\n if (this.parent.element.querySelector('.' + literals.gridFooter)) {\n remove(this.parent.element.querySelector('.' + literals.gridFooter));\n }\n };\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\n };\n Aggregate.prototype.refresh = function (data, element) {\n var editedData = data instanceof Array ? data : [data];\n this.parent.notify(refreshFooterRenderer, editedData);\n if (element) {\n editedData.row = element;\n }\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(groupAggregates, editedData);\n }\n };\n return Aggregate;\n}());\nexport { Aggregate };\n/**\n * @param {AggregateRowModel[]} aggregates - specifies the AggregateRowModel\n * @param {Function} callback - specifies the Function\n * @returns {void}\n * @private\n */\nexport function summaryIterator(aggregates, callback) {\n for (var i = 0; i < aggregates.length; i++) {\n for (var j = 0; j < aggregates[parseInt(i.toString(), 10)].columns.length; j++) {\n callback(aggregates[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)], aggregates[parseInt(i.toString(), 10)]);\n }\n }\n}\n","import { extend, addClass, removeClass, setValue, closest, select } from '@syncfusion/ej2-base';\nimport { remove, classList } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { parentsUntil, inArray, refreshForeignData, getObject, alignFrozenEditForm, gridActionHandler, addRemoveEventListener } from '../base/util';\nimport { splitFrozenRowObjectCells, getGridRowElements } from '../base/util';\nimport { sliceElements, getCellByColAndRowIndex } from '../base/util';\nimport { getGridRowObjects } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.initialRender = true;\n this.validationColObj = [];\n /** @hidden */\n this.addBatchRow = false;\n this.prevEditedBatchCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.click, handler: this.clickHandler },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.beforeCellFocused, handler: this.onBeforeCellFocused },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.keyPressed, handler: this.keyDownHandler },\n { event: events.editNextValCell, handler: this.editNextValCell },\n { event: events.closeBatch, handler: this.closeForm },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.addEventListener(events.batchCancel, this.batchCancelFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(events.batchCancel, this.batchCancelFunction);\n };\n BatchEdit.prototype.batchCancel = function () {\n this.parent.focusModule.restoreFocus();\n };\n BatchEdit.prototype.dataBound = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n BatchEdit.prototype.clickHandler = function (e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if (this.parent.isEdit && closest(this.form, 'td') !== closest(e.target, 'td')) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, literals.rowCell) && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n };\n BatchEdit.prototype.dblClickHandler = function (e) {\n var target = parentsUntil(e.target, literals.rowCell);\n var tr = parentsUntil(e.target, literals.row);\n var rowIndex = tr && parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n var colIndex = target && parseInt(target.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(target) && !isNullOrUndefined(rowIndex) && !isNaN(colIndex)\n && !target.parentElement.classList.contains(literals.editedRow)) {\n this.editCell(rowIndex, this.parent.getColumns()[parseInt(colIndex.toString(), 10)].field, this.isAddRow(rowIndex));\n }\n };\n BatchEdit.prototype.onBeforeCellFocused = function (e) {\n if (this.parent.isEdit && this.validateFormObj() &&\n (e.byClick || (['tab', 'shiftTab', 'enter', 'shiftEnter'].indexOf(e.keyArgs.action) > -1))) {\n e.cancel = true;\n if (e.byClick) {\n e.clickArgs.preventDefault();\n }\n else {\n e.keyArgs.preventDefault();\n }\n }\n };\n BatchEdit.prototype.onCellFocused = function (e) {\n var frzCols = this.parent.getFrozenLeftCount();\n var frzRightCols = this.parent.getFrozenRightColumnsCount();\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var mHdr = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (this.parent.focusModule.active) {\n this.prevEditedBatchCell = this.parent.focusModule.active.matrix.current.toString() === this.prevEditedBatchCellMatrix()\n .toString();\n this.crtRowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(closest(e.element, 'tr'));\n }\n if (!e.byKey || clear || (this.parent.isFrozenGrid() && e.element && closest(e.element, '.e-gridheader')\n && closest(e.element, 'thead'))) {\n if ((this.parent.isEdit && clear) || (this.parent.isFrozenGrid() && this.parent.isEdit && e.byKey)) {\n this.saveCell();\n }\n return;\n }\n var _a = e.container.indexes, rowIndex = _a[0], cellIndex = _a[1];\n if (frzCols && (mCont.contains(e.element) || (this.parent.frozenRows && mHdr.contains(e.element)))) {\n cellIndex += frzCols;\n }\n if (frzRightCols) {\n var frHdr = this.parent.getHeaderContent().querySelector('.e-frozen-right-header');\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frCont.contains(e.element) || (this.parent.frozenRows && frHdr.contains(e.element))) {\n cellIndex += (frzCols + this.parent.getMovableColumnsCount());\n }\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += this.parent.frozenRows;\n }\n var isEdit = this.parent.isEdit;\n if (!this.parent.element.getElementsByClassName('e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n // eslint-disable-next-line no-case-declarations\n var indent = this.parent.isRowDragable() && this.parent.isDetail() ? 2 :\n this.parent.isRowDragable() || this.parent.isDetail() ? 1 : 0;\n // eslint-disable-next-line no-case-declarations\n var col = this.parent.getColumns()[cellIndex - indent];\n if (col && !this.parent.isEdit) {\n this.editCell(rowIndex, col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n // eslint-disable-next-line no-case-declarations\n var args = { cancel: false, keyArgs: e.keyArgs };\n this.parent.notify('beforeFocusCellEdit', args);\n if (!args.cancel && isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n };\n BatchEdit.prototype.isAddRow = function (index) {\n return this.parent.getDataRows()[parseInt(index.toString(), 10)].classList.contains('e-insertedrow');\n };\n BatchEdit.prototype.editCellFromIndex = function (rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[parseInt(cellIdx.toString(), 10)].field, this.isAddRow(rowIdx));\n };\n BatchEdit.prototype.closeEdit = function () {\n var _this = this;\n var gObj = this.parent;\n var rows = this.parent.getRowsObject();\n var argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(events.beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n var allRows = getGridRowObjects(this.parent);\n var _loop_1 = function (i) {\n var isInsert = false;\n var isDirty = rows[parseInt(i.toString(), 10)].isDirty;\n gridActionHandler(this_1.parent, function (tableName, rows) {\n isInsert = _this.removeBatchElementChanges(rows[parseInt(i.toString(), 10)], isDirty);\n if (isInsert) {\n rows.splice(i, 1);\n }\n }, allRows);\n if (isInsert) {\n i--;\n }\n out_i_1 = i;\n };\n var this_1 = this, out_i_1;\n for (var i = 0; i < rows.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n var args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n if (!this.parent.isFrozenGrid()) {\n gObj.notify(events.batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n }\n else {\n if (this.parent.getRowsObject().length) {\n gObj.notify(events.batchCancel, { rows: this.parent.getRowsObject(),\n args: { isFrozen: true } });\n }\n if (this.parent.getMovableRowsObject().length) {\n gObj.notify(events.batchCancel, { rows: this.parent.getMovableRowsObject() });\n }\n if (this.parent.getFrozenRightRowsObject().length) {\n gObj.notify(events.batchCancel, { rows: this.parent.getFrozenRightRowsObject(),\n args: { renderFrozenRightContent: true } });\n }\n }\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.editModule.resetMovableContentValidation();\n gObj.notify(events.toolbarRefresh, {});\n this.parent.notify(events.tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(events.batchCancel, args);\n };\n BatchEdit.prototype.removeBatchElementChanges = function (row, isDirty) {\n var gObj = this.parent;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInstertedRemoved = false;\n if (isDirty) {\n row.isDirty = isDirty;\n var tr = gObj.getRowElementByUID(row.uid);\n if (tr) {\n if (tr.classList.contains('e-insertedrow')) {\n remove(tr);\n isInstertedRemoved = true;\n }\n else {\n refreshForeignData(row, this.parent.getForeignKeyColumns(), row.data);\n delete row.changes;\n delete row.edit;\n row.isDirty = false;\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(row, gObj.getColumns(), false);\n }\n if (this.parent.aggregates.length > 0) {\n var type = 'type';\n var editType = [];\n editType[\"\" + type] = 'cancel';\n this.parent.notify(events.refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, editType);\n }\n }\n }\n }\n return isInstertedRemoved;\n };\n BatchEdit.prototype.removeHideAndSelection = function (tr) {\n if (tr.classList.contains('e-hiddenrow')) {\n tr.removeAttribute('aria-selected');\n var tdElements = [].slice.call(tr.getElementsByClassName('e-selectionbackground'));\n for (var i = 0; i < tdElements.length; i++) {\n removeClass([tdElements[parseInt(i.toString(), 10)]], ['e-selectionbackground', 'e-active']);\n }\n }\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n };\n BatchEdit.prototype.deleteRecord = function (fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, {});\n }\n }\n };\n BatchEdit.prototype.addRecord = function (data) {\n this.bulkAddRow(data);\n };\n BatchEdit.prototype.endEdit = function () {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n };\n BatchEdit.prototype.closeForm = function () {\n for (var i = 0; i < Object.keys(this.originalCell).length; i++) {\n for (var j = 0; j < Object.keys(this.cloneCell).length; j++) {\n if (Object.keys(this.originalCell)[parseInt(i.toString(), 10)] === Object\n .keys(this.cloneCell)[parseInt(j.toString(), 10)]) {\n this.cloneCell[Object.keys(this.cloneCell)[parseInt(j.toString(), 10)]].replaceWith(this.originalCell[Object\n .keys(this.originalCell)[parseInt(i.toString(), 10)]]);\n if (this.originalCell[Object.keys(this.originalCell)[parseInt(i.toString(), 10)]].classList.contains('e-selectionbackground')) {\n this.originalCell[Object.keys(this.originalCell)[parseInt(i.toString(), 10)]]\n .classList.remove('e-selectionbackground', 'e-cellselectionbackground', 'e-active');\n }\n }\n }\n }\n this.cloneCell = {};\n this.originalCell = {};\n };\n BatchEdit.prototype.validateFormObj = function () {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n };\n BatchEdit.prototype.batchSave = function () {\n var gObj = this.parent;\n var deletedRecords = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n var checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n var changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[\"\" + deletedRecords].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[\"\" + deletedRecords] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n var original = {\n changedRecords: this.parent.getRowsObject()\n .filter(function (row) { return row.isDirty && ['add', 'delete'].indexOf(row.edit) === -1; })\n .map(function (row) { return row.data; })\n };\n var args = { batchChanges: changes, cancel: false };\n gObj.trigger(events.beforeBatchSave, args, function (beforeBatchSaveArgs) {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.bulkSave, { changes: changes, original: original });\n });\n gObj.editModule.resetMovableContentValidation();\n };\n BatchEdit.prototype.getBatchChanges = function () {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var rows = this.parent.getRowsObject();\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isDirty) {\n switch (row.edit) {\n case 'add':\n changes.addedRecords.push(row.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row.data);\n break;\n default:\n changes.changedRecords.push(row.changes);\n }\n }\n }\n return changes;\n };\n /**\n * @param {string} uid - specifes the uid\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeRowObjectFromUID = function (uid) {\n var rows = this.parent.getRowsObject();\n var i = 0;\n for (var len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].uid === uid) {\n break;\n }\n }\n gridActionHandler(this.parent, function (tableName, rows) {\n rows.splice(i, 1);\n }, getGridRowObjects(this.parent));\n };\n /**\n * @param {Row} row - specifies the row object\n * @param {freezeTable} newTableName - specifies the table name\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addRowObject = function (row, newTableName) {\n var gObj = this.parent;\n var isTop = gObj.editSettings.newRowPosition === 'Top';\n gridActionHandler(this.parent, function (tableName, rows) {\n var rowClone = row.clone();\n if (gObj.isFrozenGrid()) {\n if (newTableName === tableName) {\n if (isTop) {\n rows.unshift(rowClone);\n }\n else {\n rows.push(rowClone);\n }\n }\n }\n else {\n if (isTop) {\n rows.unshift(rowClone);\n }\n else {\n rows.push(rowClone);\n }\n }\n }, getGridRowObjects(this.parent), true);\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkDelete = function (fieldname, data) {\n var _this = this;\n this.removeSelectedData = [];\n var gObj = this.parent;\n var index = gObj.selectedRowIndex;\n var selectedRows = gObj.getSelectedRows();\n var args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = data ? gObj.getRows()[parseInt(index.toString(), 10)] : selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeBatchDelete, args, function (beforeBatchDeleteArgs) {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n _this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[parseInt(index.toString(), 10)] : selectedRows[0];\n if (_this.parent.isFrozenGrid()) {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute(literals.dataRowIndex), 10);\n selectedRows = [];\n selectedRows.push(gObj.getRowByIndex(index));\n selectedRows.push(gObj.getMovableRowByIndex(index));\n if (gObj.getFrozenMode() === literals.leftRight) {\n selectedRows.push(gObj.getFrozenRightRowByIndex(index));\n }\n }\n for (var i = 0; i < selectedRows.length; i++) {\n var uid = selectedRows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (selectedRows[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(selectedRows[parseInt(i.toString(), 10)]);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(selectedRows[parseInt(i.toString(), 10)], ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getMovableDataRows().length >= gObj.frozenRows) {\n gObj.getMovableHeaderTbody().appendChild(gObj.getMovableRowByIndex(gObj.frozenRows - 1));\n gObj.getFrozenHeaderTbody().appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n if (gObj.getFrozenMode() === literals.leftRight) {\n gObj.getFrozenRightHeaderTbody().appendChild(gObj.getFrozenRightRowByIndex(gObj.frozenRows - 1));\n }\n }\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete selectedRows[parseInt(i.toString(), 10)];\n }\n }\n else if (!_this.parent.isFrozenGrid() && (selectedRows.length === 1 || data)) {\n var uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && _this.parent.editModule.deleteRowUid ? uid = _this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n for (var i = 0; i < selectedRows.length; i++) {\n var uniqueid = selectedRows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (selectedRows[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[parseInt(i.toString(), 10)]);\n }\n else {\n classList(selectedRows[parseInt(i.toString(), 10)], ['e-hiddenrow', 'e-updatedtd'], []);\n var selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[parseInt(i.toString(), 10)];\n }\n }\n }\n _this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n if (gObj.getSelectedRows().length) {\n index = parseInt(gObj.getSelectedRows()[0].getAttribute(literals.dataRowIndex), 10);\n }\n }\n if (!gObj.isCheckBoxSelection) {\n gObj.selectRow(index);\n }\n gObj.trigger(events.batchDelete, beforeBatchDeleteArgs);\n gObj.notify(events.batchDelete, { rows: _this.parent.getRowsObject() });\n gObj.notify(events.toolbarRefresh, {});\n });\n };\n BatchEdit.prototype.refreshRowIdx = function () {\n var gObj = this.parent;\n var rows = gObj.getAllDataRows(true);\n var dataRows = getGridRowElements(this.parent);\n var dataObjects = getGridRowObjects(this.parent);\n var _loop_2 = function (i, j, len) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow')) {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, j.toString());\n rowElements[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (j + 1).toString());\n rowObjects[parseInt(i.toString(), 10)].index = j;\n }, dataRows, null, dataObjects);\n j++;\n }\n else {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[parseInt(i.toString(), 10)].removeAttribute(literals.dataRowIndex);\n rowElements[parseInt(i.toString(), 10)].removeAttribute(literals.ariaRowIndex);\n rowObjects[parseInt(i.toString(), 10)].index = -1;\n }, dataRows, null, dataObjects);\n }\n out_j_1 = j;\n };\n var this_2 = this, out_j_1;\n for (var i = 0, j = 0, len = rows.length; i < len; i++) {\n _loop_2(i, j, len);\n j = out_j_1;\n }\n };\n BatchEdit.prototype.getIndexFromData = function (data) {\n return inArray(data, this.parent.getCurrentViewRecords());\n };\n BatchEdit.prototype.bulkAddRow = function (data) {\n var _this = this;\n var gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell();\n this.parent.notify(events.editNextValCell, {});\n }\n if (gObj.isEdit) {\n return;\n }\n if (this.initialRender) {\n var visibleColumns = gObj.getVisibleColumns();\n for (var i = 0; i < visibleColumns.length; i++) {\n if (visibleColumns[parseInt(i.toString(), 10)].validationRules &&\n visibleColumns[parseInt(i.toString(), 10)].validationRules['required']) {\n var obj = { field: (visibleColumns[parseInt(i.toString(), 10)]['field']).slice(), cellIdx: i };\n this.validationColObj.push(obj);\n }\n }\n this.initialRender = false;\n }\n this.parent.element.classList.add('e-editing');\n var defaultData = data ? data : this.getDefaultData();\n var args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(events.beforeBatchAdd, args, function (beforeBatchAddArgs) {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n _this.isAdded = true;\n gObj.clearSelection();\n if (gObj.isFrozenGrid()) {\n var movableCnt = _this.parent.getMovableColumnsCount();\n var leftCnt = _this.parent.getFrozenLeftCount();\n var rightCnt = _this.parent.getFrozenRightColumnsCount();\n var tbody$$1 = gObj.getContentTable().querySelector(literals.tbody);\n var totCount = movableCnt + leftCnt + rightCnt;\n var tableTanName = void 0;\n var selectedRowAdd = [];\n var selectedRowAddCells = [];\n var col = void 0;\n var index = void 0;\n var tr = void 0;\n var mTr = void 0;\n var frTr = void 0;\n for (var i = 0; i < totCount;) {\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n if (leftCnt > 0) {\n leftCnt = 0;\n tableTanName = 'frozen-left';\n totCount = leftCnt + rightCnt + movableCnt;\n }\n else if (movableCnt > 0) {\n movableCnt = 0;\n tableTanName = 'movable';\n totCount = leftCnt + rightCnt + movableCnt;\n }\n else {\n rightCnt = 0;\n tableTanName = 'frozen-right';\n totCount = leftCnt + rightCnt + movableCnt;\n }\n for (var i_1 = 0; i_1 < modelData.length; i_1++) {\n modelData[parseInt(i_1.toString(), 10)]\n .cells = splitFrozenRowObjectCells(_this.parent, modelData[parseInt(i_1.toString(), 10)].cells, tableTanName);\n }\n if (tableTanName === 'frozen-left') {\n tr = row.render(modelData[0], gObj.getColumns());\n tr.classList.add('e-insertedrow');\n }\n else if (tableTanName === 'movable') {\n mTr = row.render(modelData[0], gObj.getColumns());\n mTr.classList.add('e-insertedrow');\n }\n else {\n frTr = row.render(modelData[0], gObj.getColumns());\n frTr.classList.add('e-insertedrow');\n }\n for (var i_2 = 0; i_2 < _this.parent.groupSettings.columns.length; i_2++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n if (tbody$$1.querySelector('.e-emptyrow')) {\n var emptyRow = tbody$$1.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n _this.removeFrozenTbody();\n }\n if (tableTanName === 'frozen-left') {\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody$$1 = gObj.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody$$1 = gObj.getContentTable().querySelector(literals.tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody$$1.insertBefore(tr, tbody$$1.firstChild);\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n }\n else {\n tbody$$1.appendChild(tr);\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n }\n }\n if (tableTanName === 'movable' || tableTanName === 'frozen-right') {\n _this.renderFrozenAddRow(mTr, frTr, tableTanName);\n }\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0], tableTanName);\n }\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject(), args: { isFrozen: _this.parent.isFrozenGrid() } });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[literals.addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n if (tr) {\n alignFrozenEditForm(mTr.querySelector('td:not(.e-hide)'), tr.querySelector('td:not(.e-hide)'));\n selectedRowAdd.push(tr);\n selectedRowAddCells.push(tr.cells);\n }\n selectedRowAdd.push(mTr);\n selectedRowAddCells.push(mTr.cells);\n if (frTr) {\n selectedRowAdd.push(frTr);\n selectedRowAddCells.push(frTr.cells);\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: selectedRowAdd,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey, cell: selectedRowAddCells\n };\n gObj.trigger(events.batchAdd, args1);\n }\n else {\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n var tr = row.render(modelData[0], gObj.getColumns());\n var col = void 0;\n var index = void 0;\n for (var i = 0; i < _this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n var tbody = gObj.getContentTable().querySelector(literals.tbody);\n tr.classList.add('e-insertedrow');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n _this.removeFrozenTbody();\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody = gObj.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = gObj.getContentTable().querySelector(literals.tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(tr, tbody.firstChild);\n }\n else {\n tbody.appendChild(tr);\n }\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0]);\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject(), args: { isFrozen: _this.parent.isFrozenGrid() } });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[literals.addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey,\n cell: !isNullOrUndefined(index) ? tr.cells[parseInt(index.toString(), 10)] : undefined\n };\n gObj.trigger(events.batchAdd, args1);\n }\n });\n };\n BatchEdit.prototype.renderFrozenAddRow = function (mTr, frTr, tableName$$1) {\n var gObj = this.parent;\n var mTbody;\n var frTbody;\n if (tableName$$1 === 'movable') {\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n mTbody = this.parent.getMovableHeaderTbody();\n }\n else {\n mTbody = this.parent.getContent().querySelector('.e-movablecontent').querySelector(literals.tbody);\n }\n if (gObj.editSettings.newRowPosition === 'Top') {\n mTbody.insertBefore(mTr, mTbody.firstChild);\n }\n else {\n mTbody.appendChild(mTr);\n }\n addClass([].slice.call(mTr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n }\n if (tableName$$1 === 'frozen-right') {\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n frTbody = this.parent.getFrozenRightHeaderTbody();\n }\n else {\n frTbody = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n }\n if (gObj.editSettings.newRowPosition === 'Top') {\n frTbody.insertBefore(frTr, frTbody.firstChild);\n }\n else {\n frTbody.appendChild(frTr);\n }\n addClass([].slice.call(frTr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n alignFrozenEditForm(frTr.querySelector('td:not(.e-hide)'), mTr.querySelector('td:not(.e-hide)'));\n }\n if (gObj.height === 'auto') {\n gObj.notify(events.frozenHeight, {});\n }\n };\n BatchEdit.prototype.removeFrozenTbody = function () {\n var gObj = this.parent;\n if (gObj.isFrozenGrid()) {\n var moveTbody = gObj.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (gObj.getFrozenMode() === literals.leftRight) {\n var frTbody = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n (frTbody.firstElementChild).parentNode.removeChild(frTbody.firstElementChild);\n }\n }\n };\n BatchEdit.prototype.renderMovable = function (ele, rightEle) {\n var mEle = ele.cloneNode(true);\n var movable = this.parent.getMovableColumnsCount();\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n sliceElements(ele, 0, left);\n sliceElements(mEle, left, right ? mEle.children.length - right : mEle.children.length);\n sliceElements(rightEle, left + movable, rightEle.children.length);\n return mEle;\n };\n BatchEdit.prototype.findNextEditableCell = function (columnIndex, isAdd, isValOnly) {\n var cols = this.parent.getColumns();\n var endIndex = cols.length;\n var validation;\n for (var i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[parseInt(i.toString(), 10)].validationRules) : false;\n if (!isAdd && this.checkNPCell(cols[parseInt(i.toString(), 10)])) {\n return i;\n }\n else if (isAdd && (!cols[parseInt(i.toString(), 10)].template || cols[parseInt(i.toString(), 10)].field)\n && cols[parseInt(i.toString(), 10)].visible && !(cols[parseInt(i.toString(), 10)].isIdentity\n && cols[parseInt(i.toString(), 10)].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n };\n BatchEdit.prototype.checkNPCell = function (col) {\n return !col.template && col.visible && !col.isPrimaryKey && !col.isIdentity && col.allowEditing;\n };\n BatchEdit.prototype.getDefaultData = function () {\n var gObj = this.parent;\n var data = {};\n var dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field) {\n setValue(col.field, Object.keys(col).indexOf('defaultValue') >= 0 ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n };\n BatchEdit.prototype.setCellIdx = function (target) {\n var gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n };\n BatchEdit.prototype.editCell = function (index, field, isAdd) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n var checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index && this.prevEditedBatchCell));\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex].classList.contains('e-insertedrow')))) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n };\n BatchEdit.prototype.editCellExtend = function (index, field, isAdd) {\n var _this = this;\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n var row;\n var mRowData;\n var rowData = extend({}, {}, this.getDataByIndex(index), true);\n if (col.getFreezeTableName() === 'movable' || col.getFreezeTableName() === literals.frozenRight) {\n row = col.getFreezeTableName() === 'movable' ? gObj.getMovableDataRows()[parseInt(index.toString(), 10)] : gObj.getFrozenRightDataRows()[parseInt(index.toString(), 10)];\n mRowData = this.parent.getRowObjectFromUID(row.getAttribute('data-uid'));\n rowData = mRowData.changes ? extend({}, {}, mRowData.changes, true) : rowData;\n }\n else {\n row = gObj.getDataRows()[parseInt(index.toString(), 10)];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n }\n if ((keys[0] === col.field && !row.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity) || col.commands) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n var rowObj = gObj.getRowObjectFromUID(row.getAttribute('data-uid'));\n var cells = [].slice.apply(row.cells);\n var args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n gObj.trigger(events.cellEdit, args, function (cellEditArgs) {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[_this.getColIndex(cells, _this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n _this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute(literals.dataColIndex), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n _this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(_this.cellDetails.rowIndex, true);\n }\n _this.renderer.update(cellEditArgs);\n _this.parent.notify(events.batchEditFormRendered, cellEditArgs);\n _this.form = select('#' + gObj.element.id + 'EditForm', gObj.element);\n gObj.editModule.applyFormValidation([col]);\n _this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n };\n BatchEdit.prototype.updateCell = function (rowIndex, field, value) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var index = gObj.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey && col.allowEditing) {\n var td = getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n var rowObj = col.getFreezeTableName() === 'movable' ? this.parent.getMovableRowsObject()[parseInt(rowIndex.toString(), 10)] :\n col.getFreezeTableName() === literals.frozenRight ? gObj.getFrozenRightRowsObject()[parseInt(rowIndex.toString(), 10)]\n : gObj.getRowObjectFromUID(td.parentElement.getAttribute('data-uid'));\n this.refreshTD(td, col, rowObj, value);\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td, column: col, data: rowObj.changes\n });\n }\n };\n BatchEdit.prototype.setChanges = function (rowObj, field, value) {\n var currentRowObj;\n if (!this.parent.isFrozenGrid()) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n if (typeof value === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[\"\" + field] !== value) {\n var type = this.parent.getColumnByField(field).type;\n if ((type === 'date' || type === 'datetime')) {\n if (new Date(rowObj.data[\"\" + field]).toString() !== new Date(value).toString()) {\n rowObj.isDirty = true;\n }\n }\n else {\n rowObj.isDirty = true;\n }\n }\n }\n else {\n var rowEle = this.parent.getRowElementByUID(rowObj.uid);\n var rowIndex = parseInt(rowEle.getAttribute(literals.dataRowIndex), 10);\n currentRowObj = this.parent.getRowsObject()[parseInt(rowIndex.toString(), 10)];\n if (!currentRowObj.changes) {\n currentRowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n setValue(field, value, currentRowObj.changes);\n }\n var movableRowObject = this.parent.getMovableRowsObject()[parseInt(rowIndex.toString(), 10)];\n movableRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[\"\" + field] !== value) {\n movableRowObject.isDirty = true;\n currentRowObj.isDirty = true;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frRowObject = this.parent.getFrozenRightRowsObject()[parseInt(rowIndex.toString(), 10)];\n frRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[\"\" + field] !== value) {\n frRowObject.isDirty = true;\n }\n }\n }\n };\n BatchEdit.prototype.updateRow = function (index, data) {\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var col = keys_1[_i];\n this.updateCell(index, col, data[\"\" + col]);\n }\n };\n BatchEdit.prototype.getCellIdx = function (uid) {\n var cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n };\n BatchEdit.prototype.refreshTD = function (td, column, rowObj, value) {\n var cell = new CellRenderer(this.parent, this.serviceLocator);\n var rowcell;\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n this.setChanges(rowObj, column.field, value);\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n frzCols = frzCols && this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (frzCols && column.getFreezeTableName() === 'movable' && this.parent.getColumns().length === rowObj.cells.length) {\n rowcell = rowObj.cells.slice(frzCols, rowObj.cells.length);\n }\n else {\n rowcell = rowObj.cells;\n }\n var parentElement;\n var cellIndex;\n if (this.parent.isReact) {\n parentElement = td.parentElement;\n cellIndex = td.cellIndex;\n }\n var index = 0;\n if (frzCols) {\n index = column.getFreezeTableName() === 'movable' && this.parent.getFrozenMode() !== 'Right'\n ? frzCols : column.getFreezeTableName() === literals.frozenRight\n ? this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount() : index;\n }\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - index], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n if (this.parent.isReact) {\n this.newReactTd = parentElement.cells[parseInt(cellIndex.toString(), 10)];\n parentElement.cells[parseInt(cellIndex.toString(), 10)].classList.add('e-updatedtd');\n }\n else {\n td.classList.add('e-updatedtd');\n }\n td.classList.add('e-updatedtd');\n this.parent.notify(events.toolbarRefresh, {});\n };\n BatchEdit.prototype.getColIndex = function (cells, index) {\n var cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n };\n BatchEdit.prototype.editNextValCell = function () {\n var gObj = this.parent;\n var insertedRows = gObj.element.querySelectorAll('.e-insertedrow');\n var isSingleInsert = insertedRows.length === 1 ? true : (gObj.getFrozenColumns() > 0 ||\n gObj.getFrozenRightColumnsCount() > 0 || gObj.getFrozenLeftColumnsCount() > 0) && (insertedRows.length === 2 ||\n insertedRows.length === 3) ? true : false;\n if (isSingleInsert && this.isAdded && !gObj.isEdit) {\n var btmIdx = this.getBottomIndex();\n for (var i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n var index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n var col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (col) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n this.editCell(btmIdx, col.field, true);\n }\n else {\n var args = { index: 0, column: col };\n this.parent.notify(events.nextCellIndex, args);\n this.editCell(args.index, col.field, true);\n }\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n else if (!isSingleInsert && this.isAdded && !gObj.isEdit && !gObj.isFrozenGrid()) {\n var editRowIdx = 0;\n if (gObj.editSettings.newRowPosition === 'Bottom') {\n var changes = this.getBatchChanges();\n editRowIdx = gObj.getCurrentViewRecords().length - changes[literals.deletedRecords].length;\n }\n for (var i = 0; i < insertedRows.length; i++, editRowIdx++) {\n if (!gObj.isEdit) {\n for (var j = 0; j < this.validationColObj.length; j++) {\n if (gObj.isEdit) {\n break;\n }\n else if (insertedRows[parseInt(i.toString(), 10)].querySelectorAll('td')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx].innerText === '') {\n this.editCell(editRowIdx, this.validationColObj[parseInt(j.toString(), 10)].field);\n if (this.validateFormObj()) {\n this.saveCell();\n }\n }\n }\n }\n else {\n break;\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n else if (!isSingleInsert && this.isAdded && !gObj.isEdit && gObj.isFrozenGrid()) {\n var fLeftInsertedRow = gObj.getFrozenLeftContentTbody() ? gObj.getFrozenLeftContentTbody()\n .querySelectorAll('.e-insertedrow') : undefined;\n var fRightInsertedRow = gObj.getFrozenRightContentTbody() ? gObj.getFrozenRightContentTbody()\n .querySelectorAll('.e-insertedrow') : undefined;\n var mInsertedRow = gObj.getMovableContentTbody().querySelectorAll('.e-insertedrow');\n var editRowIdx = 0;\n var fLeftCount = gObj.getVisibleFrozenLeftCount() ? gObj.getVisibleFrozenLeftCount() :\n gObj.getFrozenColumns();\n var fRightCount = gObj.getVisibleFrozenRightCount();\n var mColumnCount = gObj.getVisibleMovableCount();\n if (gObj.editSettings.newRowPosition === 'Bottom') {\n var changes = this.getBatchChanges();\n editRowIdx = gObj.getCurrentViewRecords().length - changes[literals.deletedRecords].length;\n }\n else if (gObj.editSettings.newRowPosition === 'Top' && gObj.frozenRows) {\n fLeftInsertedRow = gObj.getFrozenHeaderTbody() ? gObj.getFrozenHeaderTbody()\n .querySelectorAll('.e-insertedrow') : undefined;\n fRightInsertedRow = gObj.getFrozenRightHeader() ? gObj.getFrozenRightHeader()\n .querySelectorAll('.e-insertedrow') : undefined;\n mInsertedRow = gObj.getMovableHeaderTbody().querySelectorAll('.e-insertedrow');\n }\n for (var i = 0; i < mInsertedRow.length; i++, editRowIdx++) {\n if (!gObj.isEdit) {\n for (var j = 0; j < this.validationColObj.length; j++) {\n if (gObj.isEdit) {\n break;\n }\n else if (fLeftCount && this.validationColObj[parseInt(j.toString(), 10)].cellIdx < fLeftCount) {\n if (fLeftInsertedRow[parseInt(i.toString(), 10)].querySelectorAll('td')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx].innerText === '') {\n this.editCell(editRowIdx, this.validationColObj[parseInt(j.toString(), 10)].field);\n if (gObj.editModule.formObj.validate()) {\n this.saveCell();\n }\n }\n }\n else if (fRightCount && mColumnCount <= this.validationColObj[parseInt(j.toString(), 10)].cellIdx) {\n if (fRightInsertedRow[parseInt(i.toString(), 10)].querySelectorAll('td')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx - (mColumnCount + fLeftCount)].innerText === '') {\n this.editCell(editRowIdx, this.validationColObj[parseInt(j.toString(), 10)].field);\n if (gObj.editModule.formObj.validate()) {\n this.saveCell();\n }\n }\n }\n else if (mInsertedRow[parseInt(i.toString(), 10)].querySelectorAll('td')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx - fLeftCount].innerText === '') {\n this.editCell(editRowIdx, this.validationColObj[parseInt(j.toString(), 10)].field);\n if (gObj.editModule.formObj.validate()) {\n this.saveCell();\n }\n }\n }\n }\n else {\n break;\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n };\n BatchEdit.prototype.escapeCellEdit = function () {\n var args = this.generateCellArgs();\n args.value = args.previousValue;\n if (args.value || !this.cellDetails.column.validationRules) {\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n }\n };\n BatchEdit.prototype.generateCellArgs = function () {\n var gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n var column = this.cellDetails.column;\n var obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n var editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n var cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n var value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n var args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n args.cell = this.form.parentElement;\n args.columnObject = column;\n return args;\n };\n BatchEdit.prototype.saveCell = function (isForceSave) {\n if (this.preventSaveCell || !this.form) {\n return;\n }\n var gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n var args = this.generateCellArgs();\n var tr = args.cell.parentElement;\n var col = args.column;\n if (!isForceSave) {\n gObj.trigger(events.cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(events.batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n };\n BatchEdit.prototype.successCallBack = function (cellSaveArgs, tr, column, isEscapeCellEdit) {\n var _this = this;\n return function (cellSaveArgs) {\n var gObj = _this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : _this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n _this.parent.notify(events.tooltipDestroy, {});\n var rowObj = parentsUntil(cellSaveArgs.cell, literals.movableContent)\n || parentsUntil(cellSaveArgs.cell, literals.movableHeader) ? gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), true)\n : gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n if (gObj.getFrozenMode() === literals.leftRight && (parentsUntil(cellSaveArgs.cell, 'e-frozen-right-header')\n || parentsUntil(cellSaveArgs.cell, 'e-frozen-right-content'))) {\n rowObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), false, true);\n }\n _this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n if (_this.parent.isReact) {\n cellSaveArgs.cell = _this.newReactTd;\n }\n removeClass([tr], [literals.editedRow, 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString() && !_this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(rowObj.data[column.field]) &&\n isNullOrUndefined(_this.cellDetails.value) && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n gObj.notify(events.toolbarRefresh, {});\n _this.isColored = false;\n if (_this.parent.aggregates.length > 0) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n if (_this.parent.groupSettings.columns.length > 0 && !_this.isAddRow(_this.cellDetails.rowIndex)) {\n _this.parent.notify(events.groupAggregates, {});\n }\n }\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field && _this.prevEditedBatchCell) {\n return;\n }\n var col = gObj.getColumnByField(_this.field);\n if (col && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex].classList.contains('e-insertedrow')))) {\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(events.restoreFocus, {});\n }\n };\n };\n BatchEdit.prototype.prevEditedBatchCellMatrix = function () {\n var editedBatchCellMatrix = [];\n var gObj = this.parent;\n var editedBatchCell = gObj.focusModule.active ? gObj.focusModule.active.getTable().querySelector('.e-editedbatchcell')\n : undefined;\n if (editedBatchCell) {\n var tr = editedBatchCell.parentElement;\n var rowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(tr);\n var cellIndex = [].slice.call(tr.cells).indexOf(editedBatchCell);\n editedBatchCellMatrix = [rowIndex, cellIndex];\n }\n return editedBatchCellMatrix;\n };\n BatchEdit.prototype.getDataByIndex = function (index) {\n var row = this.parent.getRowObjectFromUID(this.parent.getDataRows()[parseInt(index.toString(), 10)].getAttribute('data-uid'));\n return row.changes ? row.changes : row.data;\n };\n BatchEdit.prototype.keyDownHandler = function (e) {\n if (this.addBatchRow || ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit)) {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n var rowcell = parentsUntil(e.target, literals.rowCell);\n if (this.addBatchRow || rowcell) {\n var cell = rowcell ? rowcell.querySelector('.e-field') : undefined;\n if (this.addBatchRow || cell) {\n var visibleColumns = this.parent.getVisibleColumns();\n var columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (this.addBatchRow\n || visibleColumns[parseInt(columnIndex.toString(), 10)].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n this.addBatchRow = false;\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addCancelWhilePaging = function () {\n if (this.validateFormObj()) {\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.isColored = false;\n }\n };\n BatchEdit.prototype.getBottomIndex = function () {\n var changes = this.getBatchChanges();\n return this.parent.getCurrentViewRecords().length + changes[literals.addedRecords].length -\n changes[literals.deletedRecords].length - 1;\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","import * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n *\n * @returns {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.destroy();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function () {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(events.actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function () {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(events.fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cBoxFltrBegin, this.actionBegin);\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.parent.off(events.fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\nexport { CheckBoxFilter };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (isFrozen) {\n var fTr = dataRows[parseInt(rIdx.toString(), 10)];\n var mTr = mRows[parseInt(rIdx.toString(), 10)];\n isAvail = !fTr.querySelector('[data-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[data-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[parseInt(rIdx.toString(), 10)];\n isAvail = frTr.querySelector('[data-colindex=\"' + cIdx + '\"]');\n }\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === literals.leftRight || this.parent.getFrozenMode() === 'Right') {\n frRows = this.parent.getFrozenRightRows();\n }\n }\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (isFrozen) {\n movableCols.push.apply(movableCols, [].slice.call(mRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n rightCols.push.apply(rightCols, [].slice.call(frRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n if (this.parent.getFrozenMode() === 'Left' || this.parent.getFrozenMode() === literals.leftRight ||\n (this.parent.isFrozenGrid() && !this.parent.getFrozenMode())) {\n leftCols.push.apply(leftCols, [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n else {\n leftCols.push.apply(leftCols, [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n var cells = leftCols.concat(movableCols).concat(rightCols);\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]));\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n getElementsByClassName('e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy')) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length && rowIndexes[rowIndexes.length - 1] - rowIndexes[0] === rowIndexes.length - 1) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","import { classList, addClass, removeClass, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { EventHandler, closest } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { Dialog, calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { createCboxWithWrap, toogleCheckbox, parentsUntil, removeAddCboxClasses } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { SearchBox } from '../services/focus-strategy';\nimport * as literals from '../base/string-literals';\n/**\n * The `ColumnChooser` module is used to show or hide columns dynamically.\n */\nvar ColumnChooser = /** @class */ (function () {\n /**\n * Constructor for the Grid ColumnChooser module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function ColumnChooser(parent, serviceLocator) {\n this.showColumn = [];\n this.hideColumn = [];\n this.changedColumns = [];\n this.unchangedColumns = [];\n this.isDlgOpen = false;\n this.initialOpenDlg = true;\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.isInitialOpen = false;\n this.isCustomizeOpenCC = false;\n this.searchOperator = 'wildcard';\n this.prevShowedCols = [];\n this.hideDialogFunction = this.hideDialog.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { type: 'checkbox', 'aria-checked': 'true' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { 'type': 'checkbox', 'aria-checked': 'false' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n ColumnChooser.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n this.unWireEvents();\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.element && !this.dlgObj.isDestroyed) {\n this.dlgObj.destroy();\n }\n };\n ColumnChooser.prototype.rtlUpdate = function () {\n if (this.parent.enableRtl) {\n addClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n else {\n removeClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(document, 'click', this.clickHandler, this);\n this.parent.on(events.uiUpdate, this.enableAfterRenderEle, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.addEventListener(events.dataBound, this.hideDialogFunction);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.rtlUpdated, this.rtlUpdate, this);\n this.parent.on(events.resetColumns, this.onResetColumns, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'click', this.clickHandler);\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.uiUpdate, this.enableAfterRenderEle);\n this.parent.off(events.rtlUpdated, this.rtlUpdate);\n this.parent.off(events.resetColumns, this.onResetColumns);\n this.parent.removeEventListener(events.dataBound, this.hideDialogFunction);\n };\n ColumnChooser.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderDlgContent();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n };\n ColumnChooser.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n if (!this.isCustomizeOpenCC) {\n if (!isNullOrUndefined(closest(targetElement, '.e-cc')) || !isNullOrUndefined(closest(targetElement, '.e-cc-toolbar'))) {\n if (targetElement.classList.contains('e-columnchooser-btn') || targetElement.classList.contains('e-cc-toolbar')) {\n if ((this.initialOpenDlg && this.dlgObj.visible) || !this.isDlgOpen) {\n this.isDlgOpen = true;\n return;\n }\n }\n else if (targetElement.classList.contains('e-cc-cancel')) {\n targetElement.parentElement.querySelector('.e-ccsearch').value = '';\n this.columnChooserSearch('');\n this.removeCancelIcon();\n this.refreshCheckboxButton();\n }\n }\n else {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible && !targetElement.classList.contains('e-toolbar-items')) {\n this.dlgObj.hide();\n this.clearActions();\n this.refreshCheckboxState();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.targetdlg = e.target;\n }\n }\n if (this.isCustomizeOpenCC && e.target.classList.contains('e-cc-cancel')) {\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n };\n ColumnChooser.prototype.hideDialog = function () {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible) {\n this.dlgObj.hide();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n };\n /**\n * To render columnChooser when showColumnChooser enabled.\n *\n * @param {number} x - specifies the position x\n * @param {number} y - specifies the position y\n * @param {Element} target - specifies the target\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.renderColumnChooser = function (x, y, target) {\n if (!this.dlgObj.visible && (this.parent.detailTemplate || this.parent.childGrid)) {\n this.hideOpenedDialog();\n }\n if (!this.dlgObj.visible) {\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (target) {\n this.targetdlg = target;\n }\n this.refreshCheckboxState();\n this.dlgObj.dataBind();\n this.dlgObj.element.style.maxHeight = '430px';\n var elementVisible = this.dlgObj.element.style.display;\n this.dlgObj.element.style.display = 'block';\n var isSticky = this.parent.getHeaderContent().classList.contains('e-sticky');\n var toolbarItem = closest(target, '.e-toolbar-item');\n var newpos = void 0;\n if (isSticky) {\n newpos = toolbarItem.getBoundingClientRect();\n this.dlgObj.element.classList.add('e-sticky');\n }\n else {\n this.dlgObj.element.classList.remove('e-sticky');\n newpos = calculateRelativeBasedPosition(toolbarItem, this.dlgObj.element);\n }\n this.dlgObj.element.style.display = elementVisible;\n this.dlgObj.element.style.top = newpos.top + closest(target, '.e-cc-toolbar').getBoundingClientRect().height + 'px';\n var dlgWidth = 250;\n if (!isNullOrUndefined(closest(target, '.e-bigger'))) {\n this.dlgObj.width = 258;\n }\n if (Browser.isDevice) {\n this.dlgObj.target = document.body;\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n this.dlgObj.open = this.mOpenDlg.bind(this);\n }\n else {\n if (this.parent.enableRtl) {\n this.dlgObj.element.style.left = target.offsetLeft + 'px';\n }\n else {\n this.dlgObj.element.style.left = ((newpos.left - dlgWidth) + closest(target, '.e-cc-toolbar').clientWidth) + 2 + 'px';\n }\n }\n this.removeCancelIcon();\n this.dlgObj.show();\n this.parent.notify(events.columnChooserOpened, { dialog: this.dlgObj });\n }\n else {\n // this.unWireEvents();\n this.hideDialog();\n this.addcancelIcon();\n this.clearActions();\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n this.isCustomizeOpenCC = true;\n if (this.dlgObj.visible) {\n this.hideDialog();\n return;\n }\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (!this.isInitialOpen) {\n this.dlgObj.content = this.renderChooserList();\n this.updateIntermediateBtn();\n }\n else {\n this.refreshCheckboxState();\n }\n this.dlgObj.dataBind();\n this.dlgObj.position = { X: 'center', Y: 'center' };\n if (isNullOrUndefined(X)) {\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n }\n else {\n this.dlgObj.element.style.top = '';\n this.dlgObj.element.style.left = '';\n this.dlgObj.element.style.top = Y + 'px';\n this.dlgObj.element.style.left = X + 'px';\n }\n this.dlgObj.beforeOpen = this.customDialogOpen.bind(this);\n this.dlgObj.show();\n this.isInitialOpen = true;\n this.dlgObj.beforeClose = this.customDialogClose.bind(this);\n };\n ColumnChooser.prototype.enableAfterRenderEle = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n ColumnChooser.prototype.keyUpHandler = function (e) {\n if (e.key === 'Escape') {\n this.hideDialog();\n }\n this.setFocus(parentsUntil(e.target, 'e-cclist'));\n };\n ColumnChooser.prototype.setFocus = function (elem) {\n var prevElem = this.dlgDiv.querySelector('.e-colfocus');\n if (prevElem) {\n prevElem.classList.remove('e-colfocus');\n }\n if (elem) {\n elem.classList.add('e-colfocus');\n }\n };\n ColumnChooser.prototype.customDialogOpen = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.add(searchElement, 'keyup', this.columnChooserManualSearch, this);\n };\n ColumnChooser.prototype.customDialogClose = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.remove(searchElement, 'keyup', this.columnChooserManualSearch);\n };\n ColumnChooser.prototype.getColumns = function () {\n var columns = this.parent.getColumns().filter(function (column) { return (column.type !== 'checkbox'\n && column.showInColumnChooser === true) || (column.type === 'checkbox' && column.field !== undefined); });\n return columns;\n };\n ColumnChooser.prototype.renderDlgContent = function () {\n this.dlgDiv = this.parent.createElement('div', { className: 'e-ccdlg e-cc', id: this.parent.element.id + '_ccdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('ColumnChooserDialogARIA'));\n this.parent.element.appendChild(this.dlgDiv);\n this.dlgObj = new Dialog({\n header: this.l10n.getConstant('ChooseColumns'),\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n target: document.getElementById(this.parent.element.id),\n buttons: [{\n click: this.confirmDlgBtnClick.bind(this),\n buttonModel: {\n content: this.l10n.getConstant('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-cc e-cc_okbtn' + ' ' + this.parent.cssClass : 'e-cc e-cc_okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ?\n 'e-flat e-cc e-cc-cnbtn' + ' ' + this.parent.cssClass : 'e-flat e-cc e-cc-cnbtn',\n content: this.l10n.getConstant('CancelButton') }\n }],\n content: this.renderChooserList(),\n width: 250,\n cssClass: this.parent.cssClass ? 'e-cc' + ' ' + this.parent.cssClass : 'e-cc',\n animationSettings: { effect: 'None' }\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.dlgObj.appendTo(this.dlgDiv);\n this.wireEvents();\n };\n ColumnChooser.prototype.renderChooserList = function () {\n this.mainDiv = this.parent.createElement('div', { className: 'e-main-div e-cc' });\n var searchDiv = this.parent.createElement('div', { className: 'e-cc-searchdiv e-cc e-input-group' });\n var ccsearchele = this.parent.createElement('input', {\n className: 'e-ccsearch e-cc e-input',\n attrs: { placeholder: this.l10n.getConstant('Search'), cssClass: this.parent.cssClass }\n });\n var ccsearchicon = this.parent.createElement('span', {\n className: 'e-ccsearch-icon e-icons e-cc e-input-group-icon',\n attrs: { title: this.l10n.getConstant('Search') }\n });\n var conDiv = this.parent.createElement('div', { className: 'e-cc-contentdiv' });\n this.innerDiv = this.parent.createElement('div', { className: 'e-innerdiv e-cc' });\n searchDiv.appendChild(ccsearchele);\n searchDiv.appendChild(ccsearchicon);\n this.searchBoxObj = new SearchBox(ccsearchele);\n var innerDivContent = this.refreshCheckboxList(this.parent.getColumns());\n this.innerDiv.appendChild(innerDivContent);\n conDiv.appendChild(this.innerDiv);\n this.mainDiv.appendChild(searchDiv);\n this.mainDiv.appendChild(conDiv);\n return this.mainDiv;\n };\n ColumnChooser.prototype.confirmDlgBtnClick = function (args) {\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.changedColumns = (this.changedColumns.length > 0) ? this.changedColumns : this.unchangedColumns;\n this.changedColumnState(this.changedColumns);\n var uncheckedLength = this.ulElement.querySelector('.e-uncheck') &&\n this.ulElement.querySelectorAll('.e-uncheck:not(.e-selectall)').length;\n if (!isNullOrUndefined(args)) {\n if (uncheckedLength < this.parent.getColumns().length) {\n if (this.hideColumn.length) {\n this.columnStateChange(this.hideColumn, false);\n }\n if (this.showColumn.length) {\n this.columnStateChange(this.showColumn, true);\n }\n this.getShowHideService.setVisible(this.stateChangeColumns, this.changedStateColumns);\n this.clearActions();\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n if (this.parent.getCurrentViewRecords().length === 0) {\n var emptyRowCell = this.parent.element.querySelector('.e-emptyrow').querySelector('td');\n emptyRowCell.setAttribute('colSpan', this.parent.getVisibleColumns().length.toString());\n }\n }\n }\n };\n ColumnChooser.prototype.onResetColumns = function (e) {\n if (e.requestType === 'columnstate') {\n this.resetColumnState();\n return;\n }\n };\n ColumnChooser.prototype.resetColumnState = function () {\n this.showColumn = [];\n this.hideColumn = [];\n this.hideDialog();\n };\n ColumnChooser.prototype.changedColumnState = function (changedColumns) {\n for (var index = 0; index < changedColumns.length; index++) {\n var colUid = changedColumns[parseInt(index.toString(), 10)];\n var currentCol = this.parent.getColumnByUid(colUid);\n this.changedStateColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.columnStateChange = function (stateColumns, state) {\n for (var index = 0; index < stateColumns.length; index++) {\n var colUid = stateColumns[parseInt(index.toString(), 10)];\n var currentCol = this.parent.getColumnByUid(colUid);\n if (currentCol.type !== 'checkbox') {\n currentCol.visible = state;\n }\n this.stateChangeColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.clearActions = function () {\n this.resetColumnState();\n this.addcancelIcon();\n };\n ColumnChooser.prototype.clearBtnClick = function () {\n this.clearActions();\n this.parent.notify(events.columnChooserCancelBtnClick, { dialog: this.dlgObj });\n };\n ColumnChooser.prototype.checkstatecolumn = function (isChecked, coluid, selectAll) {\n if (selectAll === void 0) { selectAll = false; }\n var currentCol = this.parent.getColumnByUid(coluid);\n if (isChecked) {\n if (this.hideColumn.indexOf(coluid) !== -1) {\n this.hideColumn.splice(this.hideColumn.indexOf(coluid), 1);\n }\n if (this.showColumn.indexOf(coluid) === -1 && !(currentCol && currentCol.visible)) {\n this.showColumn.push(coluid);\n }\n }\n else {\n if (this.showColumn.indexOf(coluid) !== -1) {\n this.showColumn.splice(this.showColumn.indexOf(coluid), 1);\n }\n if (this.hideColumn.indexOf(coluid) === -1 && (currentCol && currentCol.visible)) {\n this.hideColumn.push(coluid);\n }\n }\n if (selectAll) {\n if (!isChecked) {\n this.changedColumns.push(coluid);\n }\n else {\n this.unchangedColumns.push(coluid);\n }\n }\n else if (this.changedColumns.indexOf(coluid) !== -1) {\n this.changedColumns.splice(this.changedColumns.indexOf(coluid), 1);\n }\n else {\n this.changedColumns.push(coluid);\n }\n };\n ColumnChooser.prototype.columnChooserSearch = function (searchVal) {\n var clearSearch = false;\n var fltrCol;\n var okButton;\n var buttonEle = this.dlgDiv.querySelector('.e-footer-content');\n var selectedCbox = this.ulElement.querySelector('.e-check') &&\n this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n this.isInitialOpen = true;\n if (buttonEle) {\n okButton = buttonEle.querySelector('.e-btn').ej2_instances[0];\n }\n if (searchVal === '') {\n this.removeCancelIcon();\n fltrCol = this.getColumns();\n clearSearch = true;\n }\n else {\n fltrCol = new DataManager(this.getColumns()).executeLocal(new Query()\n .where('headerText', this.searchOperator, searchVal, true, this.parent.columnChooserSettings.ignoreAccent));\n }\n if (fltrCol.length) {\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.classList.remove('e-ccnmdiv');\n this.innerDiv.appendChild(this.refreshCheckboxList(fltrCol));\n if (!clearSearch) {\n this.addcancelIcon();\n this.refreshCheckboxButton();\n }\n else {\n if (okButton && selectedCbox) {\n okButton.disabled = false;\n }\n }\n }\n else {\n var nMatchele = this.parent.createElement('span', { className: 'e-cc e-nmatch' });\n nMatchele.innerHTML = this.l10n.getConstant('Matchs');\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.appendChild(nMatchele);\n this.innerDiv.classList.add('e-ccnmdiv');\n if (okButton) {\n okButton.disabled = true;\n }\n }\n this.flag = true;\n this.stopTimer();\n };\n ColumnChooser.prototype.wireEvents = function () {\n EventHandler.add(this.dlgObj.element, 'click', this.checkBoxClickHandler, this);\n EventHandler.add(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch, this);\n EventHandler.add(this.dlgObj.element, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n };\n ColumnChooser.prototype.unWireEvents = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.dlgObj.element) {\n EventHandler.remove(this.dlgObj.element, 'click', this.checkBoxClickHandler);\n EventHandler.remove(this.dlgObj.element, 'keyup', this.keyUpHandler);\n }\n EventHandler.remove(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch);\n this.searchBoxObj.unWireEvent();\n };\n ColumnChooser.prototype.checkBoxClickHandler = function (e) {\n var checkstate;\n var elem = parentsUntil(e.target, 'e-checkbox-wrapper');\n if (elem) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateSelectAll(!elem.querySelector('.e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n elem.querySelector('.e-chk-hidden').focus();\n if (elem.querySelector('.e-check')) {\n checkstate = true;\n elem.firstChild.setAttribute('aria-checked', 'true');\n }\n else if (elem.querySelector('.e-uncheck')) {\n checkstate = false;\n elem.firstChild.setAttribute('aria-checked', 'false');\n }\n else {\n return;\n }\n this.updateIntermediateBtn();\n var columnUid = parentsUntil(elem, 'e-ccheck').getAttribute('uid');\n var column = this.parent.getColumns();\n if (columnUid === 'grid-selectAll') {\n this.changedColumns = [];\n this.unchangedColumns = [];\n for (var i = 0; i < column.length; i++) {\n if (column[parseInt(i.toString(), 10)].showInColumnChooser) {\n this.checkstatecolumn(checkstate, column[parseInt(i.toString(), 10)].uid, true);\n }\n }\n }\n else {\n this.checkstatecolumn(checkstate, columnUid);\n }\n this.refreshCheckboxButton();\n this.setFocus(parentsUntil(e.target, 'e-cclist'));\n }\n };\n ColumnChooser.prototype.updateIntermediateBtn = function () {\n var cnt = this.ulElement.children.length - 1;\n var className = [];\n var elem = this.ulElement.children[0].querySelector('.e-frame');\n var selected = this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n var btn = this.dlgObj.btnObj[0];\n var inputElem = elem.parentElement.querySelector('input');\n btn.disabled = false;\n if (cnt === selected) {\n className = ['e-check'];\n inputElem.setAttribute('aria-checked', 'true');\n }\n else if (selected) {\n className = ['e-stop'];\n inputElem.setAttribute('aria-checked', 'mixed');\n }\n else {\n className = ['e-uncheck'];\n inputElem.setAttribute('aria-checked', 'false');\n btn.disabled = true;\n }\n btn.dataBind();\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n };\n ColumnChooser.prototype.updateSelectAll = function (checked) {\n var cBoxes = [].slice.call(this.ulElement.getElementsByClassName('e-frame'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n var cBoxInput = cBox.parentElement.querySelector('input');\n if (cBox.classList.contains('e-check')) {\n cBoxInput.setAttribute('aria-checked', 'true');\n }\n else if (cBox.classList.contains('e-uncheck')) {\n cBoxInput.setAttribute('aria-checked', 'false');\n }\n }\n };\n ColumnChooser.prototype.refreshCheckboxButton = function () {\n var visibleCols = this.parent.getVisibleColumns();\n for (var i = 0; i < visibleCols.length; i++) {\n var columnUID = visibleCols[parseInt(i.toString(), 10)].uid;\n if (this.prevShowedCols.indexOf(columnUID) === -1) {\n this.prevShowedCols.push(columnUID);\n }\n }\n for (var i = 0; i < this.hideColumn.length; i++) {\n var index = this.prevShowedCols.indexOf(this.hideColumn[parseInt(i.toString(), 10)]);\n if (index !== -1) {\n this.prevShowedCols.splice(index, 1);\n }\n }\n var selected = this.showColumn.length !== 0 ? 1 : this.prevShowedCols.length;\n var btn = this.dlgDiv.querySelector('.e-footer-content').querySelector('.e-btn').ej2_instances[0];\n btn.disabled = false;\n var srchShowCols = [];\n var searchData = [].slice.call(this.parent.element.getElementsByClassName('e-cc-chbox'));\n for (var i = 0, itemsLen = searchData.length; i < itemsLen; i++) {\n var element = searchData[parseInt(i.toString(), 10)];\n var columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n srchShowCols.push(columnUID);\n }\n var hideCols = this.showColumn.filter(function (column) { return srchShowCols.indexOf(column) !== -1; });\n if (selected === 0 && hideCols.length === 0) {\n btn.disabled = true;\n }\n btn.dataBind();\n };\n ColumnChooser.prototype.refreshCheckboxList = function (gdCol) {\n this.ulElement = this.parent.createElement('ul', { className: 'e-ccul-ele e-cc' });\n var selectAllValue = this.l10n.getConstant('SelectAll');\n var cclist = this.parent.createElement('li', { className: 'e-cclist e-cc e-cc-selectall' });\n var selectAll = this.createCheckBox(selectAllValue, false, 'grid-selectAll');\n if (gdCol.length) {\n selectAll.querySelector('.e-checkbox-wrapper').firstElementChild.classList.add('e-selectall');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n this.checkState(selectAll.querySelector('.e-icons'), true);\n cclist.appendChild(selectAll);\n this.ulElement.appendChild(cclist);\n }\n if (this.parent.cssClass) {\n addClass([selectAll], [this.parent.cssClass]);\n }\n for (var i = 0; i < gdCol.length; i++) {\n var columns = gdCol[parseInt(i.toString(), 10)];\n this.renderCheckbox(columns);\n }\n return this.ulElement;\n };\n ColumnChooser.prototype.refreshCheckboxState = function () {\n this.dlgObj.element.querySelector('.e-cc.e-input').value = '';\n this.columnChooserSearch('');\n var gridObject = this.parent;\n var currentCheckBoxColls = this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)');\n for (var i = 0, itemLen = currentCheckBoxColls.length; i < itemLen; i++) {\n var element = currentCheckBoxColls[parseInt(i.toString(), 10)];\n var columnUID = void 0;\n if (this.parent.childGrid || this.parent.detailTemplate) {\n columnUID = parentsUntil(this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)')[parseInt(i.toString(), 10)], 'e-ccheck').getAttribute('uid');\n }\n else {\n columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n }\n var column = gridObject.getColumnByUid(columnUID);\n var uncheck = [].slice.call(element.parentElement.getElementsByClassName('e-uncheck'));\n if (column.visible && !uncheck.length) {\n element.checked = true;\n this.checkState(element.parentElement.querySelector('.e-icons'), true);\n }\n else {\n element.checked = false;\n this.checkState(element.parentElement.querySelector('.e-icons'), false);\n }\n }\n };\n ColumnChooser.prototype.checkState = function (element, state) {\n if (state) {\n classList(element, ['e-check'], ['e-uncheck']);\n }\n else {\n classList(element, ['e-uncheck'], ['e-check']);\n }\n };\n ColumnChooser.prototype.createCheckBox = function (label, checked, uid) {\n var cbox = checked ? this.cBoxTrue.cloneNode(true) : this.cBoxFalse.cloneNode(true);\n cbox.querySelector('.e-label').innerHTML = label;\n return createCboxWithWrap(uid, cbox, 'e-ccheck');\n };\n ColumnChooser.prototype.renderCheckbox = function (column) {\n var cclist;\n var hideColState;\n var showColState;\n if (column.showInColumnChooser) {\n cclist = this.parent.createElement('li', { className: 'e-cclist e-cc', styles: 'list-style:None', id: 'e-ccli_' + column.uid });\n hideColState = this.hideColumn.indexOf(column.uid) === -1 ? false : true;\n showColState = this.showColumn.indexOf(column.uid) === -1 ? false : true;\n var cccheckboxlist = this.createCheckBox(column.headerText, (column.visible && !hideColState) || showColState, column.uid);\n cclist.appendChild(cccheckboxlist);\n if (this.parent.cssClass) {\n addClass([cccheckboxlist], [this.parent.cssClass]);\n }\n this.ulElement.appendChild(cclist);\n }\n if (this.isInitialOpen) {\n this.updateIntermediateBtn();\n }\n };\n ColumnChooser.prototype.columnChooserManualSearch = function (e) {\n this.addcancelIcon();\n this.searchValue = e.target.value;\n this.stopTimer();\n this.startTimer(e);\n };\n ColumnChooser.prototype.startTimer = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var interval = !proxy.flag && e.keyCode !== 13 ? 500 : 0;\n this.timer = window.setInterval(function () { proxy.columnChooserSearch(proxy.searchValue); }, interval);\n };\n ColumnChooser.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ColumnChooser.prototype.addcancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.add('e-cc-cancel');\n this.dlgDiv.querySelector('.e-cc-cancel').setAttribute('title', this.l10n.getConstant('Clear'));\n };\n ColumnChooser.prototype.removeCancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.remove('e-cc-cancel');\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').setAttribute('title', this.l10n.getConstant('Search'));\n };\n ColumnChooser.prototype.mOpenDlg = function () {\n if (Browser.isDevice) {\n this.dlgObj.element.querySelector('.e-cc-searchdiv').classList.remove('e-input-focus');\n this.dlgObj.element.querySelectorAll('.e-cc-chbox')[0].focus();\n }\n };\n // internally use\n ColumnChooser.prototype.getModuleName = function () {\n return 'columnChooser';\n };\n ColumnChooser.prototype.hideOpenedDialog = function () {\n var openCC = [].slice.call(document.getElementsByClassName('e-ccdlg')).filter(function (dlgEle) {\n return dlgEle.classList.contains('e-popup-open');\n });\n for (var i = 0, dlgLen = openCC.length; i < dlgLen; i++) {\n if (openCC[parseInt(i.toString(), 10)].classList.contains('e-dialog') || this.parent.element.id + '_ccdlg' !== openCC[parseInt(i.toString(), 10)].id) {\n openCC[parseInt(i.toString(), 10)].ej2_instances[0].hide();\n }\n }\n };\n ColumnChooser.prototype.beforeOpenColumnChooserEvent = function () {\n var args1 = {\n requestType: 'beforeOpenColumnChooser', element: this.parent.element,\n columns: this.getColumns(), cancel: false,\n searchOperator: this.parent.columnChooserSettings.operator\n };\n if (this.searchOperator !== args1.searchOperator) {\n args1.searchOperator = this.searchOperator;\n }\n this.parent.trigger(events.beforeOpenColumnChooser, args1);\n this.searchOperator = args1.searchOperator;\n return args1;\n };\n return ColumnChooser;\n}());\nexport { ColumnChooser };\n","import { EventHandler, closest, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { parentsUntil, applyBiggerTheme } from '../base/util';\nimport * as events from '../base/constant';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Group } from '../actions/group';\nimport { Sort } from '../actions/sort';\nimport { Filter } from '../actions/filter';\nimport { Resize } from '../actions/resize';\nimport * as literals from '../base/string-literals';\n/**\n * 'column menu module used to handle column menu actions'\n *\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n function ColumnMenu(parent, serviceLocator) {\n this.defaultItems = {};\n this.localeText = this.setLocaleKey();\n this.disableItems = [];\n this.hiddenItems = [];\n this.isOpen = false;\n // default class names\n this.GROUP = 'e-icon-group';\n this.UNGROUP = 'e-icon-ungroup';\n this.ASCENDING = 'e-icon-ascending';\n this.DESCENDING = 'e-icon-descending';\n this.ROOT = 'e-columnmenu';\n this.FILTER = 'e-icon-filter';\n this.POP = 'e-filter-popup';\n this.WRAP = 'e-col-menu';\n this.CHOOSER = '_chooser_';\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ColumnMenu.prototype.wireEvents = function () {\n var elements = this.getColumnMenuHandlers();\n for (var i = 0; i < elements.length; i++) {\n EventHandler.add(elements[parseInt(i.toString(), 10)], 'mousedown', this.columnMenuHandlerDown, this);\n }\n };\n ColumnMenu.prototype.unwireEvents = function () {\n var elements = this.getColumnMenuHandlers();\n for (var i = 0; i < elements.length; i++) {\n EventHandler.remove(elements[parseInt(i.toString(), 10)], 'mousedown', this.columnMenuHandlerDown);\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.columnMenu.destroy();\n this.removeEventListener();\n this.unwireFilterEvents();\n this.unwireEvents();\n if (this.element.parentNode) {\n remove(this.element);\n }\n };\n ColumnMenu.prototype.columnMenuHandlerClick = function (e) {\n if (e.target.classList.contains('e-columnmenu')) {\n this.columnMenu.items = this.getItems();\n this.columnMenu.dataBind();\n if ((this.isOpen && this.headerCell !== this.getHeaderCell(e)) || document.querySelector('.e-grid-menu .e-menu-parent.e-ul')) {\n this.columnMenu.close();\n this.openColumnMenu(e);\n }\n else if (!this.isOpen) {\n this.openColumnMenu(e);\n }\n else {\n this.columnMenu.close();\n }\n }\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.openColumnMenuByField = function (field) {\n this.openColumnMenu({ target: this.parent.getColumnHeaderByField(field).querySelector('.e-columnmenu') });\n };\n ColumnMenu.prototype.afterFilterColumnMenuClose = function () {\n if (this.columnMenu) {\n this.columnMenu.items = this.getItems();\n this.columnMenu.dataBind();\n this.columnMenu.close();\n }\n };\n ColumnMenu.prototype.openColumnMenu = function (e) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n var headerEle = this.parent.getHeaderContent();\n var headerElemCliRect = headerEle.getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n this.element.style.cssText = 'display:block;visibility:hidden';\n var elePos = this.element.getBoundingClientRect();\n var gClient = this.parent.element.getBoundingClientRect();\n this.element.style.cssText = 'display:none;visibility:visible';\n this.headerCell = this.getHeaderCell(e);\n if (this.parent.enableRtl) {\n pos = this.parent.enableStickyHeader ? calculatePosition(this.headerCell, 'left', 'bottom', true) :\n calculatePosition(this.headerCell, 'left', 'bottom');\n }\n else {\n pos = this.parent.enableStickyHeader ? calculatePosition(this.headerCell, 'right', 'bottom', true) :\n calculatePosition(this.headerCell, 'right', 'bottom');\n pos.left -= elePos.width;\n if (headerEle.classList.contains('e-sticky')) {\n pos.top = this.parent.element.offsetTop + headerElemCliRect.top + headerElemCliRect.height;\n if (headerElemCliRect.top + headerElemCliRect.height > contentRect.top) {\n pos.top += ((headerElemCliRect.top + headerElemCliRect.height) - contentRect.top);\n }\n }\n else if (this.parent.enableStickyHeader) {\n pos.top = this.parent.element.offsetTop + headerEle.offsetTop + headerElemCliRect.height;\n }\n if ((pos.left + elePos.width + 1) >= gClient.right) {\n pos.left -= 35;\n }\n }\n this.columnMenu['open'](pos.top, pos.left);\n if (e.preventDefault) {\n e.preventDefault();\n }\n applyBiggerTheme(this.parent.element, this.columnMenu.element.parentElement);\n };\n ColumnMenu.prototype.columnMenuHandlerDown = function () {\n this.isOpen = !(this.element.style.display === 'none' || this.element.style.display === '');\n };\n ColumnMenu.prototype.getColumnMenuHandlers = function () {\n return [].slice.call(this.parent.getHeaderTable().getElementsByClassName(this.ROOT));\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerRefreshed, this.wireEvents, this);\n this.parent.on(events.uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(events.initialEnd, this.render, this);\n if (this.isFilterItemAdded()) {\n this.parent.on(events.filterDialogCreated, this.filterPosition, this);\n }\n this.parent.on(events.click, this.columnMenuHandlerClick, this);\n this.parent.on(events.afterFilterColumnMenuClose, this.afterFilterColumnMenuClose, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.headerRefreshed, this.unwireEvents);\n this.parent.off(events.uiUpdate, this.enableAfterRenderMenu);\n this.parent.off(events.initialEnd, this.render);\n if (this.isFilterItemAdded()) {\n this.parent.off(events.filterDialogCreated, this.filterPosition);\n }\n this.parent.off(events.click, this.columnMenuHandlerClick);\n this.parent.on(events.afterFilterColumnMenuClose, this.afterFilterColumnMenuClose);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n ColumnMenu.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.action === 'altDownArrow') {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openColumnMenuByField(column.field);\n }\n }\n };\n ColumnMenu.prototype.enableAfterRenderMenu = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.columnMenu) {\n this.columnMenu.destroy();\n remove(this.element);\n }\n this.render();\n }\n };\n ColumnMenu.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_columnmenu', className: 'e-colmenu' });\n this.element.setAttribute('aria-label', this.l10n.getConstant('ColumnMenuDialogARIA'));\n this.parent.element.appendChild(this.element);\n this.columnMenu = new Menu({\n cssClass: this.parent.cssClass ? 'e-grid-menu' + ' ' + this.parent.cssClass : 'e-grid-menu',\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n items: this.getItems(),\n select: this.columnMenuItemClick.bind(this),\n beforeOpen: this.columnMenuBeforeOpen.bind(this),\n onOpen: this.columnMenuOnOpen.bind(this),\n onClose: this.columnMenuOnClose.bind(this),\n beforeItemRender: this.beforeMenuItemRender.bind(this),\n beforeClose: this.columnMenuBeforeClose.bind(this)\n });\n this.columnMenu.appendTo(this.element);\n this.wireFilterEvents();\n };\n ColumnMenu.prototype.wireFilterEvents = function () {\n if (!Browser.isDevice && this.isFilterItemAdded()) {\n EventHandler.add(this.element, 'mouseover', this.appendFilter, this);\n }\n };\n ColumnMenu.prototype.unwireFilterEvents = function () {\n if (!Browser.isDevice && this.isFilterItemAdded()) {\n EventHandler.remove(this.element, 'mouseover', this.appendFilter);\n }\n };\n ColumnMenu.prototype.beforeMenuItemRender = function (args) {\n if (this.isChooserItem(args.item)) {\n var field_1 = this.getKeyFromId(args.item.id, this.CHOOSER);\n var column = this.parent.columnModel.filter(function (col) { return col.field === field_1; });\n var check = createCheckBox(this.parent.createElement, false, {\n label: args.item.text,\n checked: column[0].visible\n });\n if (this.parent.enableRtl) {\n check.classList.add('e-rtl');\n }\n if (this.parent.cssClass) {\n check.classList.add(this.parent.cssClass);\n }\n args.element.innerHTML = '';\n args.element.appendChild(check);\n }\n else if (args.item.id && this.getKeyFromId(args.item.id) === 'Filter') {\n args.element.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n args.element.className += 'e-filter-item e-menu-caret-icon';\n }\n };\n ColumnMenu.prototype.columnMenuBeforeClose = function (args) {\n var colChooser = args.event ? closest(args.event.target, '.e-menu-item') : null;\n if (!isNullOrUndefined(args.parentItem) &&\n this.getKeyFromId(args.parentItem.id) === 'ColumnChooser' &&\n colChooser && this.isChooserItem(colChooser)) {\n args.cancel = true;\n }\n else if (args.event && (closest(args.event.target, '.' + this.POP)\n || (args.event.currentTarget && args.event.currentTarget.activeElement &&\n parentsUntil(args.event.currentTarget.activeElement, 'e-filter-popup'))\n || parentsUntil(args.event.target, 'e-popup') ||\n (parentsUntil(args.event.target, 'e-popup-wrapper'))) && !Browser.isDevice) {\n args.cancel = true;\n }\n };\n ColumnMenu.prototype.isChooserItem = function (item) {\n return item.id && item.id.indexOf('_colmenu_') >= 0 &&\n this.getKeyFromId(item.id, this.CHOOSER).indexOf('_colmenu_') === -1;\n };\n ColumnMenu.prototype.columnMenuBeforeOpen = function (args) {\n args.column = this.targetColumn = this.getColumn();\n this.parent.trigger(events.columnMenuOpen, args);\n for (var _i = 0, _a = args.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var key = this.getKeyFromId(item.id);\n var dItem = this.defaultItems[\"\" + key];\n if (this.getDefaultItems().indexOf(key) !== -1 && this.ensureDisabledStatus(key) && !dItem.hide) {\n this.disableItems.push(item.text);\n }\n if (item.hide) {\n this.hiddenItems.push(item.text);\n }\n }\n this.columnMenu.enableItems(this.disableItems, false);\n this.columnMenu.hideItems(this.hiddenItems);\n };\n ColumnMenu.prototype.columnMenuOnOpen = function (args) {\n if (args.element.className === 'e-menu-parent e-ul ') {\n if (args.element.offsetHeight > window.innerHeight || this.parent.element.offsetHeight > window.innerHeight) {\n args.element.style.maxHeight = (window.innerHeight) * 0.8 + 'px';\n args.element.style.overflowY = 'auto';\n if (this.parent.enableStickyHeader) {\n args.element.style.position = 'fixed';\n }\n }\n }\n };\n ColumnMenu.prototype.ensureDisabledStatus = function (item) {\n var status = false;\n switch (item) {\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0 ||\n this.targetColumn && !this.targetColumn.allowGrouping)) {\n status = true;\n }\n break;\n case 'AutoFitAll':\n case 'AutoFit':\n status = !this.parent.ensureModuleInjected(Resize);\n break;\n case 'Ungroup':\n if (!this.parent.ensureModuleInjected(Group) || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'SortDescending':\n case 'SortAscending':\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)\n && this.parent.sortSettings.columns.length > 0 && this.targetColumn && this.targetColumn.allowSorting) {\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === this.targetColumn.field\n && sortColumns[parseInt(i.toString(), 10)].direction.toLocaleLowerCase() === item.toLocaleLowerCase().replace('sort', '')) {\n status = true;\n }\n }\n }\n else if (!this.parent.allowSorting || !this.parent.ensureModuleInjected(Sort) ||\n this.parent.allowSorting && this.targetColumn && !this.targetColumn.allowSorting) {\n status = true;\n }\n break;\n case 'Filter':\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar')\n && this.parent.ensureModuleInjected(Filter) && this.targetColumn && this.targetColumn.allowFiltering) {\n status = false;\n }\n else if (this.parent.ensureModuleInjected(Filter) && this.parent.allowFiltering\n && this.targetColumn && (!this.targetColumn.allowFiltering || this.parent.filterSettings.type === 'FilterBar')) {\n status = true;\n }\n }\n return status;\n };\n ColumnMenu.prototype.columnMenuItemClick = function (args) {\n var item = this.isChooserItem(args.item) ? 'ColumnChooser' : this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'SortAscending':\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'ColumnChooser':\n // eslint-disable-next-line no-case-declarations\n var key = this.getKeyFromId(args.item.id, this.CHOOSER);\n // eslint-disable-next-line no-case-declarations\n var checkbox = args.element.querySelector('.e-checkbox-wrapper .e-frame');\n if (checkbox && checkbox.classList.contains('e-check')) {\n checkbox.classList.remove('e-check');\n this.parent.hideColumns(key, 'field');\n }\n else if (checkbox) {\n this.parent.showColumns(key, 'field');\n checkbox.classList.add('e-check');\n }\n break;\n case 'Filter':\n this.getFilter(args.element, args.item.id);\n break;\n }\n args.column = this.targetColumn;\n this.parent.trigger(events.columnMenuClick, args);\n };\n ColumnMenu.prototype.columnMenuOnClose = function (args) {\n var parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][\"\" + parent] instanceof Menu) {\n this.columnMenu.enableItems(this.disableItems, false);\n this.disableItems = [];\n this.columnMenu.showItems(this.hiddenItems);\n this.hiddenItems = [];\n if (this.isFilterPopupOpen()) {\n this.getFilter(args.element, args.element.id, true);\n }\n }\n if (!this.parent.isFrozenGrid()) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ColumnMenu.prototype.getDefaultItems = function () {\n return ['AutoFitAll', 'AutoFit', 'SortAscending', 'SortDescending', 'Group', 'Ungroup', 'ColumnChooser', 'Filter'];\n };\n ColumnMenu.prototype.getItems = function () {\n var items = [];\n var defultItems = this.parent.columnMenuItems ? this.parent.columnMenuItems : this.getDefault();\n for (var _i = 0, defultItems_1 = defultItems; _i < defultItems_1.length; _i++) {\n var item = defultItems_1[_i];\n if (typeof item === 'string') {\n if (item === 'ColumnChooser') {\n var col = this.getDefaultItem(item);\n col.items = this.createChooserItems();\n items.push(col);\n }\n else {\n items.push(this.getDefaultItem(item));\n }\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n ColumnMenu.prototype.getDefaultItem = function (item) {\n var menuItem = {};\n switch (item) {\n case 'SortAscending':\n menuItem = { iconCss: this.ASCENDING };\n break;\n case 'SortDescending':\n menuItem = { iconCss: this.DESCENDING };\n break;\n case 'Group':\n menuItem = { iconCss: this.GROUP };\n break;\n case 'Ungroup':\n menuItem = { iconCss: this.UNGROUP };\n break;\n case 'Filter':\n menuItem = { iconCss: this.FILTER };\n break;\n }\n this.defaultItems[\"\" + item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : null\n };\n return this.defaultItems[\"\" + item];\n };\n ColumnMenu.prototype.getLocaleText = function (item) {\n return this.l10n.getConstant(this.localeText[\"\" + item]);\n };\n ColumnMenu.prototype.generateID = function (item, append) {\n return this.gridID + '_colmenu_' + (append ? append + item : item);\n };\n ColumnMenu.prototype.getKeyFromId = function (id, append) {\n return id.indexOf('_colmenu_') > 0 &&\n id.replace(this.gridID + '_colmenu_' + (append ? append : ''), '');\n };\n /**\n * @returns {HTMLElement} returns the HTMLElement\n * @hidden\n */\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.element;\n };\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n ColumnMenu.prototype.setLocaleKey = function () {\n var localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'ColumnChooser': 'Columnchooser',\n 'Filter': 'FilterMenu'\n };\n return localeKeys;\n };\n ColumnMenu.prototype.getHeaderCell = function (e) {\n return closest(e.target, 'th.e-headercell');\n };\n ColumnMenu.prototype.getColumn = function () {\n if (this.headerCell) {\n var uid = this.headerCell.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n return null;\n };\n ColumnMenu.prototype.createChooserItems = function () {\n var items = [];\n for (var _i = 0, _a = this.parent.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.showInColumnChooser && col.field) {\n items.push({ id: this.generateID(col.field, this.CHOOSER), text: col.headerText ? col.headerText : col.field });\n }\n }\n return items;\n };\n ColumnMenu.prototype.appendFilter = function (e) {\n var filter = 'Filter';\n if (!this.defaultItems[\"\" + filter]) {\n return;\n }\n else {\n var key = this.defaultItems[\"\" + filter].id;\n if (closest(e.target, '#' + key) && !this.isFilterPopupOpen()) {\n this.getFilter(e.target, key);\n }\n else if (!closest(e.target, '#' + key) && this.isFilterPopupOpen()) {\n this.getFilter(e.target, key, true);\n }\n }\n };\n ColumnMenu.prototype.getFilter = function (target, id, isClose) {\n var filterPopup = this.getFilterPop();\n if (filterPopup) {\n filterPopup.style.display = !Browser.isDevice && isClose ? 'none' : 'block';\n }\n else {\n this.parent.notify(events.filterOpen, {\n col: this.targetColumn, target: target, isClose: isClose, id: id\n });\n }\n };\n ColumnMenu.prototype.setPosition = function (li, ul) {\n var gridPos = this.parent.element.getBoundingClientRect();\n var liPos = li.getBoundingClientRect();\n var left = liPos.left - gridPos.left;\n var top = liPos.top - gridPos.top;\n if (gridPos.height < top) {\n top = top - ul.offsetHeight + liPos.height;\n }\n else if (gridPos.height < top + ul.offsetHeight) {\n top = gridPos.height - ul.offsetHeight;\n }\n if (window.innerHeight < ul.offsetHeight + top + gridPos.top) {\n top = window.innerHeight - ul.offsetHeight - gridPos.top;\n }\n if (top + gridPos.top < 0) {\n top = 0;\n }\n left += (this.parent.enableRtl ? -ul.offsetWidth : liPos.width);\n if (gridPos.width <= left + ul.offsetWidth) {\n left -= liPos.width + ul.offsetWidth;\n if (liPos.left < ul.offsetWidth) {\n left = liPos.left + ul.offsetWidth / 2;\n }\n }\n else if (left < 0) {\n left += ul.offsetWidth + liPos.width;\n }\n ul.style.top = top + 'px';\n ul.style.left = left + 'px';\n };\n ColumnMenu.prototype.filterPosition = function () {\n var filterPopup = this.getFilterPop();\n filterPopup.classList.add(this.WRAP);\n if (!Browser.isDevice) {\n var disp = filterPopup.style.display;\n filterPopup.style.cssText += 'display:block;visibility:hidden';\n var li = this.element.querySelector('.' + this.FILTER);\n if (li) {\n this.setPosition(li.parentElement, filterPopup);\n filterPopup.style.cssText += 'display:' + disp + ';visibility:visible';\n }\n }\n };\n ColumnMenu.prototype.getDefault = function () {\n var items = [];\n if (this.parent.ensureModuleInjected(Resize)) {\n items.push('AutoFitAll');\n items.push('AutoFit');\n }\n if (this.parent.allowGrouping && this.parent.ensureModuleInjected(Group)) {\n items.push('Group');\n items.push('Ungroup');\n }\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)) {\n items.push('SortAscending');\n items.push('SortDescending');\n }\n items.push('ColumnChooser');\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar') &&\n this.parent.ensureModuleInjected(Filter)) {\n items.push('Filter');\n }\n return items;\n };\n ColumnMenu.prototype.isFilterPopupOpen = function () {\n var filterPopup = this.getFilterPop();\n return filterPopup && filterPopup.style.display !== 'none';\n };\n ColumnMenu.prototype.getFilterPop = function () {\n if (Browser.isDevice && this.targetColumn !== null && this.parent.filterSettings.type === 'Menu') {\n return document.getElementById(this.targetColumn.uid + '-flmdlg');\n }\n return this.parent.element.querySelector('.' + this.POP);\n };\n ColumnMenu.prototype.isFilterItemAdded = function () {\n return (this.parent.columnMenuItems &&\n this.parent.columnMenuItems.indexOf('Filter') >= 0) || !this.parent.columnMenuItems;\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","import { closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { click, keyPressed, commandClick, initialEnd, destroy } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport { CommandColumnRenderer } from '../renderer/command-column-renderer';\nimport { getUid } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `CommandColumn` used to handle the command column actions.\n *\n * @hidden\n */\nvar CommandColumn = /** @class */ (function () {\n function CommandColumn(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.initiateRender();\n this.addEventListener();\n }\n CommandColumn.prototype.initiateRender = function () {\n var cellFac = this.locator.getService('cellRendererFactory');\n cellFac.addCellRenderer(CellType.CommandColumn, new CommandColumnRenderer(this.parent, this.locator));\n };\n CommandColumn.prototype.commandClickHandler = function (e) {\n var gObj = this.parent;\n var target = closest(e.target, 'button');\n if (!target || !closest(e.target, '.e-unboundcell')) {\n return;\n }\n var buttonObj = target.ej2_instances[0];\n var type = buttonObj.commandType;\n var uid = target.getAttribute('data-uid');\n var commandColumn;\n var row = gObj.getRowObjectFromUID(closest(target, '.' + literals.row).getAttribute('data-uid'));\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].commands) {\n var commandCols = cols[parseInt(i.toString(), 10)].commands;\n for (var j = 0; j < commandCols.length; j++) {\n var idInString = 'uid';\n var typeInString = 'type';\n if (commandCols[parseInt(j.toString(), 10)][\"\" + idInString] === uid && commandCols[parseInt(j.toString(), 10)][\"\" + typeInString] === type) {\n commandColumn = commandCols[parseInt(j.toString(), 10)];\n }\n else {\n var buttons = [].slice.call(closest(target, '.e-unboundcell').querySelectorAll('button'));\n var index = buttons.findIndex(function (ele) { return ele === target; });\n if (index < commandCols.length && commandCols[parseInt(index.toString(), 10)][\"\" + typeInString] === type) {\n commandColumn = commandCols[parseInt(index.toString(), 10)];\n }\n }\n }\n }\n }\n var args = {\n cancel: false,\n target: target,\n commandColumn: commandColumn,\n rowData: isNullOrUndefined(row) ? undefined : row.data\n };\n this.parent.trigger(commandClick, args, function (commandclickargs) {\n if (buttonObj.disabled || !gObj.editModule || commandclickargs.cancel) {\n return;\n }\n switch (type) {\n case 'Edit':\n gObj.editModule.endEdit();\n gObj.editModule.startEdit(closest(target, 'tr'));\n break;\n case 'Cancel':\n gObj.editModule.closeEdit();\n break;\n case 'Save':\n gObj.editModule.endEdit();\n break;\n case 'Delete':\n if (gObj.editSettings.mode !== 'Batch') {\n gObj.editModule.endEdit();\n }\n gObj.commandDelIndex = parseInt(closest(target, 'tr').getAttribute(literals.dataRowIndex), 10);\n gObj.clearSelection();\n //for toogle issue when dbl click\n gObj.selectRow(gObj.commandDelIndex, false);\n gObj.editModule.deleteRecord();\n gObj.commandDelIndex = undefined;\n break;\n }\n });\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * To destroy CommandColumn.\n *\n * @function destroy\n * @returns {void}\n */\n CommandColumn.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n CommandColumn.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(click, this.commandClickHandler);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(initialEnd, this.load);\n this.parent.off(destroy, this.destroy);\n };\n CommandColumn.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(click, this.commandClickHandler, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(initialEnd, this.load, this);\n this.parent.on(destroy, this.destroy, this);\n };\n CommandColumn.prototype.keyPressHandler = function (e) {\n if (e.action === 'enter' && closest(e.target, '.e-unboundcelldiv')) {\n this.commandClickHandler(e);\n e.preventDefault();\n }\n };\n CommandColumn.prototype.load = function () {\n var uid = 'uid';\n var col = this.parent.columnModel;\n for (var i = 0; i < col.length; i++) {\n if (col[parseInt(i.toString(), 10)].commands) {\n var commandCol = col[parseInt(i.toString(), 10)].commands;\n for (var j = 0; j < commandCol.length; j++) {\n commandCol[parseInt(j.toString(), 10)][\"\" + uid] = getUid('gridcommand');\n }\n }\n }\n };\n return CommandColumn;\n}());\nexport { CommandColumn };\n","import { closest, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { Resize } from '../actions/resize';\nimport { Page } from '../actions/page';\nimport { parentsUntil, applyBiggerTheme } from '../base/util';\nimport { Group } from '../actions/group';\nimport { Sort } from '../actions/sort';\nimport { PdfExport } from '../actions/pdf-export';\nimport { ExcelExport } from '../actions/excel-export';\nimport * as literals from '../base/string-literals';\nexport var menuClass = {\n header: '.' + literals.gridHeader,\n content: '.' + literals.gridContent,\n edit: '.e-inline-edit',\n batchEdit: '.e-editedbatchcell',\n editIcon: 'e-edit',\n pager: '.e-gridpager',\n delete: 'e-delete',\n save: 'e-save',\n cancel: 'e-cancel',\n copy: 'e-copy',\n pdf: 'e-pdfexport',\n group: 'e-icon-group',\n ungroup: 'e-icon-ungroup',\n csv: 'e-csvexport',\n excel: 'e-excelexport',\n fPage: 'e-icon-first',\n nPage: 'e-icon-next',\n lPage: 'e-icon-last',\n pPage: 'e-icon-prev',\n ascending: 'e-icon-ascending',\n descending: 'e-icon-descending',\n groupHeader: 'e-groupdroparea',\n touchPop: 'e-gridpopup'\n};\n/**\n * The `ContextMenu` module is used to handle context menu actions.\n */\nvar ContextMenu = /** @class */ (function () {\n function ContextMenu(parent, serviceLocator) {\n this.defaultItems = {};\n this.disableItems = [];\n this.hiddenItems = [];\n this.localeText = this.setLocaleKey();\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(events.initialLoad, this.render, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialLoad, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRenderMenu);\n this.parent.off(events.destroy, this.destroy);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler.bind(this));\n };\n ContextMenu.prototype.keyDownHandler = function (e) {\n if (e.code === 'Tab' || e.which === 9) {\n this.contextMenu.close();\n }\n if (e.code === 'Escape') {\n this.contextMenu.close();\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ContextMenu.prototype.render = function () {\n this.parent.element.classList.add('e-noselect');\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_cmenu' });\n EventHandler.add(this.element, 'keydown', this.keyDownHandler.bind(this));\n this.parent.element.appendChild(this.element);\n var target = '#' + this.gridID;\n this.contextMenu = new Menu({\n items: this.getMenuItems(),\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n target: target,\n select: this.contextMenuItemClick.bind(this),\n beforeOpen: this.contextMenuBeforeOpen.bind(this),\n onOpen: this.contextMenuOpen.bind(this),\n onClose: this.contextMenuOnClose.bind(this),\n cssClass: this.parent.cssClass ? 'e-grid-menu' + ' ' + this.parent.cssClass : 'e-grid-menu'\n });\n this.contextMenu.appendTo(this.element);\n };\n ContextMenu.prototype.enableAfterRenderMenu = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.contextMenu) {\n this.contextMenu.destroy();\n remove(this.element);\n this.parent.element.classList.remove('e-noselect');\n }\n this.render();\n }\n };\n ContextMenu.prototype.getMenuItems = function () {\n var menuItems = [];\n var exportItems = [];\n for (var _i = 0, _a = this.parent.contextMenuItems; _i < _a.length; _i++) {\n var item = _a[_i];\n if (typeof item === 'string' && this.getDefaultItems().indexOf(item) !== -1) {\n if (item.toLocaleLowerCase().indexOf('export') !== -1) {\n exportItems.push(this.buildDefaultItems(item));\n }\n else {\n menuItems.push(this.buildDefaultItems(item));\n }\n }\n else if (typeof item !== 'string') {\n menuItems.push(item);\n }\n }\n if (exportItems.length > 0) {\n var exportGroup = this.buildDefaultItems('export');\n exportGroup.items = exportItems;\n menuItems.push(exportGroup);\n }\n return menuItems;\n };\n ContextMenu.prototype.getLastPage = function () {\n var totalpage = Math.floor(this.parent.pageSettings.totalRecordsCount / this.parent.pageSettings.pageSize);\n if (this.parent.pageSettings.totalRecordsCount % this.parent.pageSettings.pageSize) {\n totalpage += 1;\n }\n return totalpage;\n };\n ContextMenu.prototype.contextMenuOpen = function () {\n this.isOpen = true;\n };\n /**\n * @param {ContextMenuClickEventArgs} args - specifies the ContextMenuClickEventArgs argument type\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.contextMenuItemClick = function (args) {\n var item = this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Edit':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode === 'Batch') {\n if (this.row && this.cell && !isNaN(parseInt(this.cell.getAttribute(literals.dataColIndex), 10))) {\n this.parent.editModule.editCell(parseInt(this.row.getAttribute(literals.dataRowIndex), 10), \n // eslint-disable-next-line\n this.parent.getColumns()[parseInt(this.cell.getAttribute(literals.dataColIndex), 10)].field);\n }\n }\n else {\n this.parent.editModule.endEdit();\n this.parent.editModule.startEdit(this.row);\n }\n }\n break;\n case 'Delete':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.parent.editModule.endEdit();\n }\n if (this.parent.getSelectedRecords().length === 1) {\n this.parent.editModule.deleteRow(this.row);\n }\n else {\n this.parent.deleteRecord();\n }\n }\n break;\n case 'Save':\n if (this.parent.editModule) {\n this.parent.editModule.endEdit();\n }\n break;\n case 'Cancel':\n if (this.parent.editModule) {\n this.parent.editModule.closeEdit();\n }\n break;\n case 'Copy':\n this.parent.copy();\n break;\n case 'PdfExport':\n this.parent.pdfExport();\n break;\n case 'ExcelExport':\n this.parent.excelExport();\n break;\n case 'CsvExport':\n this.parent.csvExport();\n break;\n case 'SortAscending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'FirstPage':\n this.parent.goToPage(1);\n break;\n case 'PrevPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage - 1);\n break;\n case 'LastPage':\n this.parent.goToPage(this.getLastPage());\n break;\n case 'NextPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage + 1);\n break;\n }\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(events.contextMenuClick, args);\n };\n ContextMenu.prototype.contextMenuOnClose = function (args) {\n var parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][\"\" + parent] instanceof Menu) {\n this.updateItemStatus();\n }\n this.parent.notify(events.selectRowOnContextOpen, { isOpen: false });\n };\n ContextMenu.prototype.getLocaleText = function (item) {\n return this.l10n.getConstant(this.localeText[\"\" + item]);\n };\n ContextMenu.prototype.updateItemStatus = function () {\n this.contextMenu.showItems(this.hiddenItems);\n this.contextMenu.enableItems(this.disableItems);\n this.hiddenItems = [];\n this.disableItems = [];\n this.isOpen = false;\n };\n ContextMenu.prototype.contextMenuBeforeOpen = function (args) {\n var closestGrid = closest(args.event.target, '.e-grid');\n if (args.event && closestGrid && closestGrid !== this.parent.element) {\n args.cancel = true;\n }\n else if (args.event && (closest(args.event.target, '.' + menuClass.groupHeader)\n || closest(args.event.target, '.' + menuClass.touchPop) ||\n closest(args.event.target, '.e-summarycell') ||\n closest(args.event.target, '.e-groupcaption') ||\n closest(args.event.target, '.e-filterbarcell'))) {\n args.cancel = true;\n }\n else {\n this.targetColumn = this.getColumn(args.event);\n if (parentsUntil(args.event.target, 'e-grid')) {\n this.targetRowdata = this.parent.getRowInfo(args.event.target);\n }\n if ((isNullOrUndefined(args.parentItem)) && this.targetColumn) {\n if (this.targetRowdata.cell) {\n this.parent.notify(events.selectRowOnContextOpen, { isOpen: true });\n this.selectRow(args.event, (this.targetRowdata.cell.classList.contains('e-selectionbackground')\n && this.parent.selectionSettings.type === 'Multiple') ? false : true);\n }\n }\n var hideSepItems = [];\n var showSepItems = [];\n for (var _i = 0, _a = args.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var key = this.getKeyFromId(item.id);\n var dItem = this.defaultItems[\"\" + key];\n if (this.getDefaultItems().indexOf(key) !== -1) {\n if (this.ensureDisabledStatus(key)) {\n this.disableItems.push(item.text);\n }\n if (args.event && (this.ensureTarget(args.event.target, menuClass.edit) ||\n this.ensureTarget(args.event.target, menuClass.batchEdit))) {\n if (key !== 'Save' && key !== 'Cancel') {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.parent.editModule && this.parent.editSettings.mode === 'Batch' &&\n ((closest(args.event.target, '.e-gridform')) ||\n this.parent.editModule.getBatchChanges()[literals.changedRecords].length ||\n this.parent.editModule.getBatchChanges()[literals.addedRecords].length ||\n this.parent.editModule.getBatchChanges()[literals.deletedRecords].length) && (key === 'Save' || key === 'Cancel')) {\n continue;\n }\n else if (isNullOrUndefined(args.parentItem) && args.event\n && !this.ensureTarget(args.event.target, dItem.target)) {\n this.hiddenItems.push(item.text);\n }\n }\n else if (item.target && args.event &&\n !this.ensureTarget(args.event.target, item.target)) {\n if (item.separator) {\n hideSepItems.push(item.id);\n }\n else {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.ensureTarget(args.event.target, item.target) && item.separator) {\n showSepItems.push(item.id);\n }\n }\n if (showSepItems.length > 0) {\n this.contextMenu.showItems(showSepItems, true);\n }\n this.contextMenu.enableItems(this.disableItems, false);\n this.contextMenu.hideItems(this.hiddenItems);\n if (hideSepItems.length > 0) {\n this.contextMenu.hideItems(hideSepItems, true);\n }\n this.eventArgs = args.event;\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(events.contextMenuOpen, args);\n if (args.cancel || (this.hiddenItems.length === args.items.length && !args.parentItem)) {\n this.updateItemStatus();\n args.cancel = true;\n }\n }\n applyBiggerTheme(this.parent.element, this.contextMenu.element.parentElement);\n };\n ContextMenu.prototype.ensureTarget = function (targetElement, selector) {\n var target = targetElement;\n if (this.ensureFrozenHeader(targetElement) && (selector === menuClass.header || selector === menuClass.content)) {\n target = closest(targetElement, selector === menuClass.header ? 'thead' : literals.tbody);\n }\n else if (selector === menuClass.content || selector === menuClass.header) {\n target = parentsUntil(closest(targetElement, '.' + literals.table), selector.substr(1, selector.length));\n }\n else {\n target = closest(targetElement, selector);\n }\n return target && parentsUntil(target, 'e-grid') === this.parent.element;\n };\n ContextMenu.prototype.ensureFrozenHeader = function (targetElement) {\n return (this.parent.isFrozenGrid() || this.parent.frozenRows)\n && closest(targetElement, menuClass.header) ? true : false;\n };\n ContextMenu.prototype.ensureDisabledStatus = function (item) {\n var status = false;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n status = !(this.parent.ensureModuleInjected(Resize) && !this.parent.isEdit)\n || (this.targetColumn && !this.targetColumn.field && item === 'AutoFit');\n break;\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n break;\n case 'Ungroup':\n if (!this.parent.allowGrouping || !this.parent.ensureModuleInjected(Group)\n || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'Edit':\n case 'Delete':\n case 'Save':\n case 'Cancel':\n if (!this.parent.editModule || (this.parent.getDataRows().length === 0)) {\n status = true;\n }\n break;\n case 'Copy':\n if ((this.parent.getSelectedRowIndexes().length === 0 && this.parent.getSelectedRowCellIndexes().length === 0) ||\n this.parent.getCurrentViewRecords().length === 0) {\n status = true;\n }\n break;\n case 'export':\n if ((!this.parent.allowExcelExport || !this.parent.excelExport) ||\n !this.parent.ensureModuleInjected(PdfExport) && !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'PdfExport':\n if (!(this.parent.allowPdfExport) || !this.parent.ensureModuleInjected(PdfExport)) {\n status = true;\n }\n break;\n case 'ExcelExport':\n case 'CsvExport':\n if (!(this.parent.allowExcelExport) || !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'SortAscending':\n case 'SortDescending':\n if ((!this.parent.allowSorting) || !this.parent.ensureModuleInjected(Sort) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n else if (this.parent.ensureModuleInjected(Sort) && this.parent.sortSettings.columns.length > 0 && this.targetColumn) {\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === this.targetColumn.field\n && sortColumns[parseInt(i.toString(), 10)].direction.toLowerCase() === item.toLowerCase().replace('sort', '').toLocaleLowerCase()) {\n status = true;\n }\n }\n }\n break;\n case 'FirstPage':\n case 'PrevPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === 1)) {\n status = true;\n }\n break;\n case 'LastPage':\n case 'NextPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === this.getLastPage())) {\n status = true;\n }\n break;\n }\n return status;\n };\n /**\n * Gets the context menu element from the Grid.\n *\n * @returns {Element} returns the element\n */\n ContextMenu.prototype.getContextMenu = function () {\n return this.element;\n };\n /**\n * Destroys the context menu component in the Grid.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.contextMenu.destroy();\n if (this.element.parentNode) {\n remove(this.element);\n }\n this.removeEventListener();\n this.parent.element.classList.remove('e-noselect');\n };\n ContextMenu.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n ContextMenu.prototype.generateID = function (item) {\n return this.gridID + '_cmenu_' + item;\n };\n ContextMenu.prototype.getKeyFromId = function (id) {\n return id.replace(this.gridID + '_cmenu_', '');\n };\n ContextMenu.prototype.buildDefaultItems = function (item) {\n var menuItem;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n menuItem = { target: menuClass.header };\n break;\n case 'Group':\n menuItem = { target: menuClass.header, iconCss: menuClass.group };\n break;\n case 'Ungroup':\n menuItem = { target: menuClass.header, iconCss: menuClass.ungroup };\n break;\n case 'Edit':\n menuItem = { target: menuClass.content, iconCss: menuClass.editIcon };\n break;\n case 'Delete':\n menuItem = { target: menuClass.content, iconCss: menuClass.delete };\n break;\n case 'Save':\n menuItem = { target: menuClass.edit, iconCss: menuClass.save };\n break;\n case 'Cancel':\n menuItem = { target: menuClass.edit, iconCss: menuClass.cancel };\n break;\n case 'Copy':\n menuItem = { target: menuClass.content, iconCss: menuClass.copy };\n break;\n case 'export':\n menuItem = { target: menuClass.content };\n break;\n case 'PdfExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.pdf };\n break;\n case 'ExcelExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.excel };\n break;\n case 'CsvExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.csv };\n break;\n case 'SortAscending':\n menuItem = { target: menuClass.header, iconCss: menuClass.ascending };\n break;\n case 'SortDescending':\n menuItem = { target: menuClass.header, iconCss: menuClass.descending };\n break;\n case 'FirstPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.fPage };\n break;\n case 'PrevPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.pPage };\n break;\n case 'LastPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.lPage };\n break;\n case 'NextPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.nPage };\n break;\n }\n this.defaultItems[\"\" + item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n target: menuItem.target, iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : ''\n };\n return this.defaultItems[\"\" + item];\n };\n ContextMenu.prototype.getDefaultItems = function () {\n return ['AutoFitAll', 'AutoFit',\n 'Group', 'Ungroup', 'Edit', 'Delete', 'Save', 'Cancel', 'Copy', 'export',\n 'PdfExport', 'ExcelExport', 'CsvExport', 'SortAscending', 'SortDescending',\n 'FirstPage', 'PrevPage', 'LastPage', 'NextPage'];\n };\n ContextMenu.prototype.setLocaleKey = function () {\n var localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Copy': 'Copy',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'Edit': 'EditRecord',\n 'Delete': 'DeleteRecord',\n 'Save': 'Save',\n 'Cancel': 'CancelButton',\n 'PdfExport': 'Pdfexport',\n 'ExcelExport': 'Excelexport',\n 'CsvExport': 'Csvexport',\n 'export': 'Export',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'FirstPage': 'FirstPage',\n 'LastPage': 'LastPage',\n 'PrevPage': 'PreviousPage',\n 'NextPage': 'NextPage'\n };\n return localeKeys;\n };\n ContextMenu.prototype.getColumn = function (e) {\n var cell = closest(e.target, 'th.e-headercell');\n if (cell) {\n var uid = cell.querySelector('.e-headercelldiv, .e-stackedheadercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n else {\n var ele = (this.parent.getRowInfo(e.target).column);\n return ele || null;\n }\n };\n ContextMenu.prototype.selectRow = function (e, isSelectable) {\n this.cell = e.target;\n this.row = closest(e.target, 'tr.e-row') || this.row;\n if (this.row && isSelectable && !parentsUntil(e.target, 'e-gridpager')) {\n this.parent.selectRow(parseInt(this.row.getAttribute(literals.dataRowIndex), 10));\n }\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n gObj.pagerModule.pagerObj.isAllPage && !this.dataManager.dataSource.offline ? null :\n gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)].field).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if (args.requestType !== undefined && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","import { removeClass, addClass, extend } from '@syncfusion/ej2-base';\nimport { closest, classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Grid } from '../base/grid';\nimport { parents, getUid, appendChildren, isComplexField, getObject } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * The `DetailRow` module is used to handle detail template and hierarchy Grid operations.\n */\nvar DetailRow = /** @class */ (function () {\n /**\n * Constructor for the Grid detail template module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifes the serviceLocator\n * @hidden\n */\n function DetailRow(parent, locator) {\n //Internal variables\n this.aria = new AriaService();\n this.childRefs = [];\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.focus = locator.getService('focus');\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.expandChildGrid, this.expand, this);\n this.parent.on(events.columnVisibilityChanged, this.refreshColSpan, this);\n this.parent.on(events.destroy, this.destroyChildGrids, this);\n this.parent.on(events.destroyChildGrid, this.destroyChildGrids, this);\n this.serviceLocator = locator;\n }\n DetailRow.prototype.clickHandler = function (e) {\n this.toogleExpandcollapse(closest(e.target, 'td'));\n };\n DetailRow.prototype.toogleExpandcollapse = function (target) {\n this.l10n = this.serviceLocator.getService('localization');\n var gObj = this.parent;\n var table = this.parent.getContentTable();\n var lastrowIdx = this.parent.getCurrentViewRecords().length - 1;\n var parent = 'parentDetails';\n var childGrid;\n var isExpanded = target && target.classList.contains('e-detailrowcollapse');\n if (!(target && (target.classList.contains('e-detailrowcollapse') || target.classList.contains('e-detailrowexpand')))\n || (target && target.classList.contains('e-masked-cell'))) {\n return;\n }\n var tr = target.parentElement;\n var uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(uid);\n var needToRefresh = false;\n var nextRow = this.parent.getContentTable().querySelector(literals.tbody).children[tr.rowIndex + 1];\n if (target.classList.contains('e-detailrowcollapse')) {\n var data = rowObj.data;\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = '';\n gObj.notify(events.detailStateChange, { data: data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n needToRefresh = true;\n }\n else if (gObj.getDetailTemplate() || gObj.childGrid) {\n var rowId = getUid('grid-row');\n var detailRow = this.parent.createElement('tr', { className: 'e-detailrow', attrs: { 'data-uid': rowId } });\n var detailCell = this.parent.createElement('th', { className: 'e-detailcell', attrs: { 'scope': 'col' } });\n var colSpan = this.parent.getVisibleColumns().length;\n if (this.parent.allowRowDragAndDrop) {\n colSpan++;\n }\n detailCell.setAttribute('colspan', colSpan.toString());\n var row = new Row({\n isDataRow: true,\n isExpand: true,\n uid: rowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n row.parentUid = rowObj.uid;\n for (var i = 0, len = gObj.groupSettings.columns.length; i < len; i++) {\n detailRow.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n row.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n detailRow.appendChild(this.parent.createElement('th', { className: 'e-detailindentcell', attrs: { 'scope': 'col' } }));\n detailRow.appendChild(detailCell);\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n if (gObj.detailTemplate) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.detailTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n if (isReactCompiler || isReactChild) {\n gObj.getDetailTemplate()(data, gObj, 'detailTemplate', detailTemplateID, null, null, detailCell);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(detailCell, gObj.getDetailTemplate()(data, gObj, 'detailTemplate', detailTemplateID, undefined, undefined, undefined, this.parent['root']));\n }\n }\n else {\n childGrid = new Grid(this.getGridModel(gObj, rowObj, gObj.printMode));\n this.childRefs.push(childGrid);\n if (childGrid.query) {\n childGrid.query = childGrid.query.clone();\n }\n childGrid[\"\" + parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: gObj.childGrid.queryString && isComplexField(gObj.childGrid.queryString) ?\n getObject(gObj.childGrid.queryString, data) : data[gObj.childGrid.queryString],\n parentRowData: data\n };\n if (gObj.isReact) {\n childGrid.parentDetails.parentInstObj = gObj;\n }\n else if (gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact) {\n childGrid.parentDetails.parentInstObj = gObj.parentDetails.parentInstObj;\n }\n childGrid.isLegacyTemplate = gObj.isReact\n || gObj.isLegacyTemplate;\n if (gObj.isPrinting) {\n childGrid.isPrinting = true;\n childGrid.on(events.contentReady, this.promiseResolve(childGrid), this);\n childGrid.on(events.onEmpty, this.promiseResolve(childGrid), this);\n }\n rowObj.childGrid = childGrid;\n var modules = childGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n childGrid.setInjectedModules(injectedModues);\n }\n var gridElem = this.parent.createElement('div', {\n id: 'child' + parents(tr, 'e-grid').length +\n '_grid' + tr.rowIndex + getUid(''), className: 'e-childgrid'\n });\n detailCell.appendChild(gridElem);\n childGrid.appendTo(gridElem);\n }\n detailRow.appendChild(detailCell);\n if (tr.nextSibling) {\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n }\n else {\n tr.parentNode.appendChild(detailRow);\n }\n var rowElems = gObj.getRows();\n var rowObjs = gObj.getRowsObject();\n rowElems.splice(rowElems.indexOf(tr) + 1, 0, detailRow);\n rowObjs.splice(rowObjs.indexOf(rowObj) + 1, 0, row);\n gObj.trigger(events.detailDataBound, { detailElement: detailCell, data: data, childGrid: childGrid });\n gObj.notify(events.detailDataBound, { rows: rowObjs });\n }\n classList(target, ['e-detailrowexpand'], ['e-detailrowcollapse']);\n classList(target.firstElementChild, ['e-dtdiagonaldown', 'e-icon-gdownarrow'], ['e-dtdiagonalright', 'e-icon-grightarrow']);\n rowObj.isExpand = true;\n if (target.classList.contains('e-lastrowcell') && this.parent.getContent().clientHeight > table.scrollHeight) {\n removeClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n var detailrowIdx = table.querySelector(literals.tbody).getElementsByClassName('e-detailrow').length - 1;\n addClass(table.querySelector(literals.tbody).getElementsByClassName('e-detailrow')[parseInt(detailrowIdx.toString(), 10)].childNodes, ['e-lastrowcell']);\n this.lastrowcell = true;\n }\n this.aria.setExpand(target, true);\n target.firstElementChild.setAttribute('title', this.l10n.getConstant('Expanded'));\n }\n else {\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = 'none';\n gObj.notify(events.detailStateChange, { data: rowObj.data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n }\n classList(target, ['e-detailrowcollapse'], ['e-detailrowexpand']);\n classList(target.firstElementChild, ['e-dtdiagonalright', 'e-icon-grightarrow'], ['e-dtdiagonaldown', 'e-icon-gdownarrow']);\n if (parseInt(tr.getAttribute(literals.dataRowIndex), 10) === lastrowIdx && this.lastrowcell) {\n addClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n this.lastrowcell = false;\n }\n rowObj.isExpand = false;\n needToRefresh = true;\n this.aria.setExpand(target, false);\n target.firstElementChild.setAttribute('title', this.l10n.getConstant('Collapsed'));\n }\n if (!isNullOrUndefined(gObj.detailTemplate) || (gObj.childGrid && needToRefresh)) {\n gObj.updateVisibleExpandCollapseRows();\n gObj.notify(events.refreshExpandandCollapse, { rows: gObj.getRowsObject() });\n }\n if (this.parent.allowTextWrap && this.parent.height === 'auto') {\n if (this.parent.getContentTable().scrollHeight > this.parent.getContent().clientHeight) {\n this.parent.scrollModule.setPadding();\n }\n else {\n this.parent.scrollModule.removePadding();\n }\n }\n };\n /**\n * @hidden\n * @param {IGrid} gObj - specifies the grid Object\n * @param {Row}rowObj - specifies the row object\n * @param {string} printMode - specifies the printmode\n * @returns {Object} returns the object\n */\n DetailRow.prototype.getGridModel = function (gObj, rowObj, printMode) {\n var gridModel;\n if (gObj.isPrinting && rowObj.isExpand && gObj.expandedRows &&\n gObj.expandedRows[rowObj.index] && gObj.expandedRows[rowObj.index].gridModel) {\n gObj.expandedRows[rowObj.index].gridModel.hierarchyPrintMode = gObj.childGrid.hierarchyPrintMode;\n gridModel = gObj.expandedRows[rowObj.index].gridModel;\n }\n else {\n if (gObj.isPrinting && gObj.childGrid.allowPaging) {\n gObj.childGrid.allowPaging = printMode === 'CurrentPage';\n }\n gridModel = extend({}, {}, gObj.childGrid, true);\n }\n return gridModel;\n };\n DetailRow.prototype.promiseResolve = function (grid) {\n var _this = this;\n return function () {\n grid.off(events.contentReady, _this.promiseResolve);\n grid.off(events.onEmpty, _this.promiseResolve);\n grid.notify(events.hierarchyPrint, {});\n };\n };\n DetailRow.prototype.isDetailRow = function (row) {\n return row && row.classList.contains('e-detailrow');\n };\n DetailRow.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + literals.gridHeader) &&\n !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.expandChildGrid, this.expand);\n this.parent.off(events.columnVisibilityChanged, this.refreshColSpan);\n this.parent.off(events.destroy, this.destroyChildGrids);\n this.parent.off(events.destroyChildGrid, this.destroyChildGrids);\n };\n DetailRow.prototype.getTDfromIndex = function (index, className) {\n var tr = !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n if (tr && tr.querySelector(className)) {\n return tr.querySelector(className);\n }\n return null;\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n DetailRow.prototype.expand = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowcollapse');\n }\n if (target && target.classList.contains('e-detailrowcollapse')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n DetailRow.prototype.collapse = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowexpand');\n }\n if (target && target.classList.contains('e-detailrowexpand')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n DetailRow.prototype.expandAll = function () {\n this.expandCollapse(true);\n this.parent.trigger(events.actionComplete, { requestType: 'expandAllComplete', type: events.actionComplete, moduleObj: this });\n };\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n DetailRow.prototype.collapseAll = function () {\n this.expandCollapse(false);\n this.parent.trigger(events.actionComplete, { requestType: 'collapseAllComplete', type: events.actionComplete, moduleObj: this });\n };\n DetailRow.prototype.expandCollapse = function (isExpand) {\n var td;\n var rows = this.parent.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n td = rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n if (isExpand) {\n this.expand(td);\n }\n else {\n this.collapse(td);\n }\n }\n };\n DetailRow.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'altUpArrow':\n case 'altDownArrow':\n // eslint-disable-next-line no-case-declarations\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var td = dataRow.querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n if (e.action === 'altDownArrow') {\n this.expand(td);\n }\n else {\n this.collapse(td);\n }\n }\n break;\n case 'enter':\n if (this.parent.isEdit) {\n return;\n }\n // eslint-disable-next-line no-case-declarations\n var element = this.focus.getFocusedElement();\n if (element && (element.classList.contains('e-icon-grightarrow') || element.classList.contains('e-icon-gdownarrow'))) {\n element = element.parentElement;\n }\n if (element && !element.classList.contains('e-detailrowcollapse') &&\n !element.classList.contains('e-detailrowexpand')) {\n break;\n }\n this.toogleExpandcollapse(element);\n break;\n }\n };\n DetailRow.prototype.refreshColSpan = function () {\n var detailrows = this.parent.contentModule.getTable().querySelectorAll('tr.e-detailrow');\n var colSpan = this.parent.getVisibleColumns().length;\n for (var i = 0; i < detailrows.length; i++) {\n detailrows[parseInt(i.toString(), 10)].querySelector('.e-detailcell').setAttribute('colspan', colSpan + '');\n }\n };\n DetailRow.prototype.destroyChildGrids = function () {\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].childGrid = null;\n }\n for (var i = 0; i < this.childRefs.length; i++) {\n if (!this.childRefs[parseInt(i.toString(), 10)].isDestroyed) {\n this.childRefs[parseInt(i.toString(), 10)].destroy();\n }\n }\n this.childRefs = [];\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n DetailRow.prototype.getModuleName = function () {\n return 'detailRow';\n };\n return DetailRow;\n}());\nexport { DetailRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `DialogEdit` module is used to handle dialog editing actions.\n *\n * @hidden\n */\nvar DialogEdit = /** @class */ (function (_super) {\n __extends(DialogEdit, _super);\n function DialogEdit(parent, serviceLocator, renderer) {\n var _this = \n //constructor\n _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n DialogEdit.prototype.closeEdit = function () {\n //closeEdit\n _super.prototype.closeEdit.call(this);\n };\n DialogEdit.prototype.addRecord = function (data, index) {\n //addRecord\n _super.prototype.addRecord.call(this, data, index);\n };\n DialogEdit.prototype.endEdit = function () {\n //endEdit\n _super.prototype.endEdit.call(this);\n };\n DialogEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n DialogEdit.prototype.deleteRecord = function (fieldname, data) {\n //deleteRecord\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n DialogEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return DialogEdit;\n}(NormalEdit));\nexport { DialogEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport var regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n /* eslint-disable-next-line security/detect-unsafe-regex */\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n *
\n * \n * \n *
\n * \n * ```\n */\nvar FormValidator = /** @class */ (function (_super) {\n __extends(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[\"\" + name], rules, {});\n }\n else {\n this.rules[\"\" + name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[\"\" + name] && !rules) {\n delete this.rules[\"\" + name];\n }\n else if (!isNullOrUndefined(this.rules[\"\" + name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[\"\" + name][rules[parseInt(i.toString())]];\n }\n }\n else {\n return;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean}\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement}\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[\"\" + key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formValidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n input.classList.remove(this.errorClass);\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n input.classList.remove(this.validClass);\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][\"\" + ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[\"\" + ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[\"\" + name]) {\n return;\n }\n var rules = Object.keys(this.rules[\"\" + name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[\"\" + name][\"\" + rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[\"\" + name][\"\" + rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[\"\" + name][\"\" + rule];\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[\"\" + rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[\"\" + rule] : this.defaultMessages[\"\" + rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[parseInt(i.toString())] : ruleValue;\n message = message.replace(formats[parseInt(i.toString())], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n this.inputElement.parentNode.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[parseInt(i.toString())];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have chekcable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= option.param;\n },\n minLength: function (option) {\n return option.value.length >= option.param;\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n return !isNaN(new Date(option.value).getTime());\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: function (option) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\nexport { FormValidator };\n","/**\n * `TemplateEditCell` is used to handle template cell.\n *\n * @hidden\n */\nvar TemplateEditCell = /** @class */ (function () {\n function TemplateEditCell(parent) {\n this.parent = parent;\n }\n TemplateEditCell.prototype.read = function (element, value) {\n return value;\n };\n TemplateEditCell.prototype.write = function () {\n //\n };\n TemplateEditCell.prototype.destroy = function () {\n //\n };\n return TemplateEditCell;\n}());\nexport { TemplateEditCell };\n","import { closest, addClass, select } from '@syncfusion/ej2-base';\nimport { extend, getValue } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { EditRender } from '../renderer/edit-renderer';\nimport { BooleanEditCell } from '../renderer/boolean-edit-cell';\nimport { DropDownEditCell } from '../renderer/dropdown-edit-cell';\nimport { NumericEditCell } from '../renderer/numeric-edit-cell';\nimport { DefaultEditCell } from '../renderer/default-edit-cell';\nimport { InlineEdit } from './inline-edit';\nimport { BatchEdit } from './batch-edit';\nimport { DialogEdit } from './dialog-edit';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { parentsUntil, getComplexFieldID, setComplexFieldID, getScrollBarWidth, setValidationRuels } from '../base/util';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport { DatePickerEditCell } from '../renderer/datepicker-edit-cell';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { TemplateEditCell } from '../renderer/template-edit-cell';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, getColumnModelByFieldName } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for the Grid editing module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the servicelocator\n * @hidden\n */\n function Edit(parent, serviceLocator) {\n this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.isValidationApplied = false;\n /* @hidden */\n this.editCellDialogClose = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n Edit.prototype.updateColTypeObj = function () {\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[parseInt(i.toString(), 10)].editTemplate) {\n var templteCell = 'templateedit';\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[\"\" + templteCell](this.parent), cols[parseInt(i.toString(), 10)].edit || {});\n }\n else {\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[cols[parseInt(i.toString(), 10)].editType\n && Edit.editCellType[cols[parseInt(i.toString(), 10)].editType] ?\n cols[parseInt(i.toString(), 10)].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[parseInt(i.toString(), 10)].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = false;\n gObj.refresh();\n break;\n }\n }\n };\n Edit.prototype.updateEditObj = function () {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n };\n Edit.prototype.initialEnd = function () {\n this.updateColTypeObj();\n };\n /**\n * Edits any bound record in the Grid by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n * @returns {void}\n */\n Edit.prototype.startEdit = function (tr) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowEditing || gObj.isEdit || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n this.isLastRow = tr.rowIndex === this.parent.getContent().querySelector('tr:last-child').rowIndex;\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n };\n /**\n * @param {Element} tr - specifies the tr element\n * @param {object} args - specifies the object\n * @param {Element} args.row -specfifes the row\n * @param {string} args.requestType - specifies the request type\n * @returns {void}\n * @hidden\n */\n Edit.prototype.checkLastRow = function (tr, args) {\n var checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args && args.requestType === 'add' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowcell');\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Edit.prototype.closeEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.getElementsByClassName('e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n this.refreshToolbar();\n this.parent.notify(events.closeEdit, {});\n };\n Edit.prototype.refreshToolbar = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n var args = { startEdit: true };\n if (!data) {\n this.parent.notify(events.virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n };\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n * @returns {void}\n */\n Edit.prototype.deleteRecord = function (fieldname, data) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n };\n /**\n * Deletes a visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Edit.prototype.deleteRow = function (tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n var rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Edit.prototype.endEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(events.editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Edit.prototype.updateCell = function (rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Edit.prototype.updateRow = function (index, data) {\n this.editModule.updateRow(index, data);\n };\n /**\n * Resets added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchCancel = function () {\n this.closeEdit();\n };\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchSave = function () {\n this.endEdit();\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Edit.prototype.editCell = function (index, field) {\n this.editModule.editCell(index, field);\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} returns whether the form is validated\n */\n Edit.prototype.editFormValidate = function () {\n var form1 = this.formObj ? this.formObj.validate() : true;\n var form2 = this.mFormObj ? this.mFormObj.validate() : true;\n var form3 = this.frFormObj ? this.frFormObj.validate() : true;\n return form1 && form2 && form3;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getBatchChanges = function () {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n };\n /**\n * Gets the current value of the edited component.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getCurrentEditCellData = function () {\n var obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n Edit.prototype.saveCell = function () {\n this.editModule.saveCell();\n };\n Edit.prototype.endEditing = function () {\n this.parent.element.classList.remove('e-editing');\n this.editModule.endEdit();\n this.refreshToolbar();\n };\n Edit.prototype.showDialog = function (content, obj) {\n obj.content = '
' + this.l10n.getConstant(content) + '
';\n obj.dataBind();\n obj.show();\n };\n Edit.prototype.getValueFromType = function (col, value) {\n var val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n }\n return val;\n };\n Edit.prototype.destroyToolTip = function () {\n var elements = [].slice.call(this.parent.element.getElementsByClassName('e-griderror'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n this.parent.getContent().firstElementChild.style.position = 'relative';\n };\n Edit.prototype.createConfirmDlg = function () {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n };\n Edit.prototype.createAlertDlg = function () {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n isPrimary: true }\n }\n ], 'EditAlert');\n };\n Edit.prototype.alertClick = function () {\n this.alertDObj.hide();\n };\n Edit.prototype.dlgWidget = function (btnOptions, name) {\n var div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n var options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n };\n options.buttons = btnOptions;\n var obj = new Dialog(options);\n var isStringTemplate = 'isStringTemplate';\n obj[\"\" + isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n };\n Edit.prototype.dlgCancel = function () {\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n this.parent.notify('cancelcnfrmDlg', {});\n };\n Edit.prototype.dlgOk = function () {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord();\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n };\n Edit.prototype.destroyEditComponents = function () {\n if (this.parent.isEdit) {\n this.destroyWidgets();\n this.destroyForm();\n }\n this.destroy();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.eventDetails = [{ event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.initialEnd, handler: this.initialEnd },\n { event: events.keyPressed, handler: this.keyPressHandler },\n { event: events.autoCol, handler: this.updateColTypeObj },\n { event: events.tooltipDestroy, handler: this.destroyToolTip },\n { event: events.preventBatch, handler: this.preventBatch },\n { event: events.destroyForm, handler: this.destroyForm },\n { event: events.destroy, handler: this.destroyEditComponents }];\n addRemoveEventListener(this.parent, this.eventDetails, true, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventDetails, false);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n };\n Edit.prototype.onDataBound = function () {\n this.resetMovableContentValidation();\n };\n Edit.prototype.actionComplete = function (e) {\n var actions = ['add', 'beginEdit', 'save', 'delete', 'cancel'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n };\n /**\n * @param {Element} form - specifies the element\n * @param {Object} editedData - specifies the edited data\n * @returns {Object} returns the object\n * @hidden\n */\n Edit.prototype.getCurrentEditedData = function (form, editedData) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n var elements = [].slice.call(form.elements);\n for (var k = 0; k < elements.length; k++) {\n if (((elements[parseInt(k.toString(), 10)].hasAttribute('name') && (elements[parseInt(k.toString(), 10)].className !== 'e-multi-hidden')) ||\n elements[parseInt(k.toString(), 10)].classList.contains('e-multiselect')) && !(elements[parseInt(k.toString(), 10)].type === 'hidden' &&\n (parentsUntil(elements[parseInt(k.toString(), 10)], 'e-switch-wrapper') || parentsUntil(elements[parseInt(k.toString(), 10)], 'e-checkbox-wrapper')))) {\n var field = (elements[parseInt(k.toString(), 10)].hasAttribute('name')) ? setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('name')) :\n setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('id'));\n var column = gObj.getColumnByField(field) || { field: field, type: elements[parseInt(k.toString(), 10)].getAttribute('type') };\n var value = void 0;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[parseInt(k.toString(), 10)].checked;\n }\n else if (elements[parseInt(k.toString(), 10)].value) {\n value = elements[parseInt(k.toString(), 10)].value;\n if (elements[parseInt(k.toString(), 10)].ej2_instances &&\n elements[parseInt(k.toString(), 10)].ej2_instances.length &&\n !isNullOrUndefined(elements[parseInt(k.toString(), 10)].ej2_instances[0].value)) {\n elements[parseInt(k.toString(), 10)].blur();\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n }\n else if (elements[parseInt(k.toString(), 10)].ej2_instances) {\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[parseInt(k.toString(), 10)], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[parseInt(k.toString(), 10)], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n if (elements[parseInt(k.toString(), 10)].type === 'radio') {\n if (elements[parseInt(k.toString(), 10)].checked) {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n else {\n if (typeof value === 'string') {\n this.parent.sanitize(value);\n }\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n }\n return editedData;\n }\n var col = gObj.columnModel.filter(function (col) { return col.editTemplate; });\n for (var j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]) {\n var inputElements = [].slice.call(form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]);\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]];\n var temp = inputElements.filter(function (e) {\n return !isNullOrUndefined((e.ej2_instances));\n });\n if (temp.length === 0) {\n temp = inputElements.filter(function (e) { return e.hasAttribute('name'); });\n }\n for (var k = 0; k < temp.length; k++) {\n var value = this.getValue(col[parseInt(j.toString(), 10)], temp[parseInt(k.toString(), 10)], editedData);\n if (col[parseInt(j.toString(), 10)].type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col[parseInt(j.toString(), 10)].field, value, editedData);\n }\n }\n }\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col_1 = gObj.getColumnByUid(inputs[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (col_1 && col_1.field) {\n var value = this.getValue(col_1, inputs[parseInt(i.toString(), 10)], editedData);\n if (col_1.type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col_1.field, value, editedData);\n }\n }\n return editedData;\n };\n Edit.prototype.getValue = function (col, input, editedData) {\n var value = input.ej2_instances ?\n input.ej2_instances[0].value : input.value;\n var gObj = this.parent;\n var temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onActionBegin = function (e) {\n if (e.requestType === 'columnstate' && this.parent.isEdit\n && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n var editRow = this.parent.element.querySelector('.' + literals.editedRow);\n var addRow = this.parent.element.querySelector('.' + literals.addedRow);\n if (editRow && this.parent.frozenRows && e.requestType === 'virtualscroll'\n && parseInt(parentsUntil(editRow, literals.row).getAttribute(literals.dataRowIndex), 10) < this.parent.frozenRows) {\n return;\n }\n var restrictedRequestTypes = ['filterafteropen', 'filterbeforeopen', 'filterchoicerequest', 'save', 'infiniteScroll', 'virtualscroll'];\n var isRestrict = restrictedRequestTypes.indexOf(e.requestType) === -1;\n var isDestroyVirtualForm = this.parent.enableVirtualization && this.formObj\n && !this.formObj.isDestroyed && (editRow || addRow || e.requestType === 'cancel') && isRestrict;\n if ((!this.parent.enableVirtualization && this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && isRestrict && !e.cancel) || isDestroyVirtualForm) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n };\n /**\n * @param {Column[]} cols - specfies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyWidgets = function (cols) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n this.parent.destroyTemplate(['editSettingsTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n cols = cols ? cols : this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization);\n if (cols.some(function (column) { return !isNullOrUndefined(column.editTemplate); })) {\n this.parent.destroyTemplate(['editTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var temp = col.edit.destroy;\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n var elements = [].slice.call(this.formObj.element.elements);\n for (var i = 0; i < elements.length; i++) {\n if (elements[parseInt(i.toString(), 10)].hasAttribute('name')) {\n if (elements[parseInt(i.toString(), 10)].ej2_instances &&\n elements[parseInt(i.toString(), 10)].ej2_instances.length &&\n !elements[parseInt(i.toString(), 10)].ej2_instances[0].isDestroyed) {\n elements[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyForm = function () {\n this.destroyToolTip();\n var formObjects = [this.formObj, this.mFormObj, this.frFormObj, this.virtualFormObj];\n for (var i = 0; i < formObjects.length; i++) {\n if (formObjects[parseInt(i.toString(), 10)] && formObjects[parseInt(i.toString(), 10)].element\n && !formObjects[parseInt(i.toString(), 10)].isDestroyed) {\n formObjects[parseInt(i.toString(), 10)].destroy();\n }\n }\n this.destroyToolTip();\n };\n /**\n * To destroy the editing.\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n var elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n };\n Edit.prototype.keyPressHandler = function (e) {\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open.e-edit-dialog')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, literals.gridContent) || (this.parent.frozenRows\n && parentsUntil(e.target, literals.headerContent)))\n && !document.getElementsByClassName('e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit && !this.editCellDialogClose) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.curretRowFocus(e);\n }\n }\n if (this.editCellDialogClose) {\n this.editCellDialogClose = false;\n }\n break;\n case 'tab':\n case 'shiftTab':\n this.curretRowFocus(e);\n break;\n }\n };\n Edit.prototype.curretRowFocus = function (e) {\n if (this.parent.isEdit && this.parent.editSettings.mode !== 'Batch') {\n var editedRow = parentsUntil(e.target, 'e-editedrow') || parentsUntil(e.target, 'e-addedrow');\n if (editedRow) {\n var selector = editedRow.classList.contains('e-addedrow') ? 'e-addedrow' : 'e-editedrow';\n var focusableEditCells = [].slice.call(editedRow.querySelectorAll('.e-input:not(.e-disabled)'));\n var commandColCell = [].slice.call(editedRow.querySelectorAll('.e-unboundcell'));\n if (commandColCell) {\n for (var i = 0; i < commandColCell.length; i++) {\n focusableEditCells = focusableEditCells.concat([].slice\n .call(commandColCell[parseInt(i.toString(), 10)].querySelectorAll('.e-btn:not(.e-hide)')));\n }\n }\n if (this.parent.isFrozenGrid()) {\n if (!isNullOrUndefined(this.parent.frozenRows) && (!isNullOrUndefined(parentsUntil(e.target, 'e-frozenheader')) ||\n !isNullOrUndefined(parentsUntil(e.target, 'e-movableheader')))) {\n var movableHeditedRow = this.parent.getHeaderContent().querySelector('.e-movableheader ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(movableHeditedRow.querySelectorAll('.e-input:not(.e-disabled)')));\n if (this.parent.getFrozenMode() === 'Left-Right' || this.parent.getFrozenMode() === 'Right') {\n var rightHEditRow = this.parent.getHeaderContent().querySelector('.e-frozen-right-header ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(rightHEditRow.querySelectorAll('.e-input:not(.e-disabled)')));\n }\n }\n else {\n var movableEditRow = this.parent.getContent().querySelector('.e-movablecontent ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(movableEditRow.querySelectorAll('.e-input:not(.e-disabled)')));\n if (this.parent.getFrozenMode() === 'Left-Right' || this.parent.getFrozenMode() === 'Right') {\n var rightFrEditRow = this.parent.getContent().querySelector('.e-frozen-right-content ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(rightFrEditRow.querySelectorAll('.e-input:not(.e-disabled)')));\n }\n }\n }\n var rowCell = parentsUntil(e.target, 'e-rowcell');\n if ((rowCell === parentsUntil(focusableEditCells[focusableEditCells.length - 1], 'e-rowcell')\n && e.action === 'tab' && !rowCell.classList.contains('e-unboundcell'))\n || (rowCell === parentsUntil(focusableEditCells[0], 'e-rowcell') && e.action === 'shiftTab')\n || e.action === 'escape') {\n var uid = editedRow.getAttribute('data-uid');\n var rows = this.parent.getRows();\n if (this.parent.getFrozenMode() === 'Left-Right' || this.parent.getFrozenMode() === 'Right') {\n rows = this.parent.getFrozenRightRows();\n }\n if (this.parent.getFrozenColumns() || this.parent.getFrozenMode() === 'Left') {\n rows = this.parent.getMovableRows();\n }\n var rowIndex = rows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (this.parent.frozenRows && parentsUntil(editedRow, 'e-content')) {\n rowIndex = rowIndex - this.parent.frozenRows;\n }\n if (editedRow.classList.contains('e-addedrow')) {\n rowIndex = 0;\n }\n if (e.action === 'escape') {\n this.closeEdit();\n }\n else {\n this.endEdit();\n }\n if (this.parent.focusModule.active) {\n this.parent.focusModule.active.matrix.current = [rowIndex, 0];\n }\n }\n }\n }\n };\n Edit.prototype.preventBatch = function (args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n };\n Edit.prototype.executeAction = function () {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n };\n /**\n * @param {Column[]} cols - specifies the column\n * @param {Object} newRule - specifies the new rule object\n * @returns {void}\n * @hidden\n */\n Edit.prototype.applyFormValidation = function (cols, newRule) {\n var gObj = this.parent;\n var frzCols = gObj.isFrozenGrid();\n var isInline = this.parent.editSettings.mode === 'Normal';\n var idx = this.parent.getFrozenMode() === 'Right' && isInline ? 1 : 0;\n var form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.element.getElementsByClassName('e-gridform')[parseInt(idx.toString(), 10)] :\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document);\n var index = this.parent.getFrozenMode() === 'Right' && isInline ? 0 : 1;\n var mForm = gObj.element.getElementsByClassName('e-gridform')[parseInt(index.toString(), 10)];\n var rules = {};\n var mRules = {};\n var frRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible && (gObj.editSettings.mode !== 'Dialog' || (gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) === -1\n && gObj.editSettings.mode === 'Dialog'))) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].validationRules && isNullOrUndefined(newRule)) {\n setValidationRuels(cols[parseInt(i.toString(), 10)], index, rules, mRules, frRules, cols.length);\n }\n }\n if (frzCols && this.parent.editSettings.mode !== 'Dialog') {\n this.parent.editModule.mFormObj = this.createFormObj(mForm, mRules);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frForm = gObj.element.getElementsByClassName('e-gridform')[2];\n this.parent.editModule.frFormObj = this.createFormObj(frForm, frRules);\n }\n }\n else {\n rules = extend(rules, mRules, frRules);\n }\n this.parent.editModule.formObj = this.createFormObj(form, newRule ? newRule : rules);\n };\n /**\n * @param {HTMLFormElement} form - Defined Form element\n * @param {Object} rules - Defines form rules\n * @returns {FormValidator} Returns formvalidator instance\n * @hidden\n */\n Edit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var uid = inputElement.getAttribute('e-mappinguid');\n var args = {\n column: _this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value\n };\n _this.valErrorPlacement(inputElement, error);\n _this.parent.notify(events.valCustomPlacement, args);\n }\n });\n };\n Edit.prototype.valErrorPlacement = function (inputElement, error) {\n if (this.parent.isEdit) {\n var id = error.getAttribute('for');\n var elem = this.getElemTable(inputElement).querySelector('#' + id + '_Error');\n if (!elem) {\n this.createTooltip(inputElement, error, id, '');\n }\n else {\n elem.querySelector('.e-tip-content').innerHTML = error.outerHTML;\n }\n }\n };\n Edit.prototype.getElemTable = function (inputElement) {\n var isFHdr;\n var gObj = this.parent;\n var table;\n if (gObj.editSettings.mode !== 'Dialog') {\n isFHdr = (gObj.frozenRows && gObj.frozenRows\n > (parseInt(closest(inputElement, '.' + literals.row).getAttribute(literals.dataRowIndex), 10) || 0));\n var field = inputElement.name;\n var col = void 0;\n if (field) {\n col = getColumnModelByFieldName(this.parent, setComplexFieldID(field));\n }\n if (col && gObj.isFrozenGrid()) {\n if (col.getFreezeTableName() === 'frozen-left') {\n table = isFHdr ? gObj.getFrozenVirtualHeader().querySelector('table')\n : gObj.getFrozenVirtualContent().querySelector('table');\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n table = isFHdr ? gObj.getFrozenRightHeader().querySelector('table')\n : gObj.getFrozenRightContent().querySelector('table');\n }\n else if (col.getFreezeTableName() === 'movable') {\n table = isFHdr ? gObj.getMovableVirtualHeader().querySelector('table')\n : gObj.getMovableVirtualContent().querySelector('table');\n }\n }\n else {\n table = isFHdr ? gObj.getHeaderTable() : gObj.getContentTable();\n }\n }\n else {\n table = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n }\n return table;\n };\n Edit.prototype.resetElemPosition = function (elem, args) {\n var td = parentsUntil(args.element, literals.rowCell);\n if (td) {\n var tdRight = td.getBoundingClientRect().right;\n var elemRight = elem.getBoundingClientRect().right;\n if (elemRight > tdRight) {\n var offSet = elemRight - tdRight;\n elem.style.left = (elem.offsetLeft - offSet) + 'px';\n }\n }\n };\n Edit.prototype.validationComplete = function (args) {\n if (this.parent.isEdit) {\n var elem = this.getElemTable(args.element).querySelector('#' + args.inputName + '_Error');\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n this.resetElemPosition(elem, args);\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.resetMovableContentValidation = function () {\n if (this.isValidationApplied && this.parent.getMovableVirtualContent() &&\n !(this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var elem = this.parent.getContent().querySelector('.' + literals.movableContent);\n elem.style.overflowX = 'auto';\n elem.style.overflowY = 'hidden';\n this.isValidationApplied = false;\n }\n };\n Edit.prototype.createTooltip = function (element, error, name, display) {\n var column = this.parent.getColumnByField(name);\n var formObj = this.parent.getFrozenMode() === literals.leftRight && this.parent.editSettings.mode === 'Normal'\n && column.getFreezeTableName() === literals.frozenRight ? this.frFormObj.element : this.formObj.element;\n var customForm = parentsUntil(element, 'e-virtual-validation');\n if (customForm) {\n formObj = this.virtualFormObj.element;\n }\n var gcontent = this.parent.getContent().firstElementChild;\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n if (frzCols) {\n gcontent = this.parent.getMovableVirtualContent();\n }\n var isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var td = closest(element, '.' + literals.rowCell);\n var row = closest(element, '.' + literals.row);\n var fCont = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var isFHdr;\n var isFHdrLastRow = false;\n var validationForBottomRowPos;\n var isBatchModeLastRow = false;\n var isSpace = this.parent.editSettings.newRowPosition === 'Bottom' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight;\n var viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n var rows = !fCont ? [].slice.call(this.parent.getContent().getElementsByClassName(literals.row))\n : [].slice.call(this.parent.getFrozenVirtualContent().getElementsByClassName(literals.row));\n if (this.parent.editSettings.mode === 'Batch') {\n if (viewPortRowCount > 1 && rows.length >= viewPortRowCount && !isSpace\n && rows[rows.length - 1].getAttribute(literals.dataRowIndex) === row.getAttribute(literals.dataRowIndex)) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows) {\n var fHeraderRows = frzCols ? this.parent.getFrozenVirtualHeader().querySelector(literals.tbody).children\n : this.parent.getHeaderTable().querySelector(literals.tbody).children;\n isFHdr = fHeraderRows.length > (parseInt(row.getAttribute(literals.dataRowIndex), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row.getAttribute(literals.dataRowIndex), 10) === fHeraderRows.length - 1;\n }\n if (isFHdrLastRow || (viewPortRowCount > 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row.classList.contains(literals.addedRow)))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n var table = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper .e-dlg-content', document);\n var client = table.getBoundingClientRect();\n var left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n var input = closest(element, 'td');\n var inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n var div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top\n - (frzCols ? fCont.scrollTop : 0)) + table.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (this.parent.cssClass) {\n div.classList.add(this.parent.cssClass);\n }\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n var content = this.parent.createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content);\n div.appendChild(arrow);\n if (!customForm && (frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n var getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.' + literals.table);\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.' + literals.frozenContent) || closest(element, '.' + literals.frozenHeader))\n || (this.parent.frozenRows && !frzCols)) {\n formObj.appendChild(div);\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n if (customForm) {\n this.virtualFormObj.element.appendChild(div);\n }\n else {\n this.formObj.element.appendChild(div);\n }\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n var contentDiv = this.parent.getContent().querySelector('.e-content');\n if (frzCols && this.parent.currentViewData.length === 0 && contentDiv.scrollTop === 0) {\n contentDiv.scrollTop = div.offsetHeight + arrow.scrollHeight;\n }\n else {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n }\n var lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if ((frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || frzCols || this.parent.frozenRows) {\n gcontent.style.position = 'static';\n var pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (closest(element, '.' + literals.movableContent) && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n var elem = this.parent.getContent().querySelector('.' + literals.movableContent);\n elem.style.overflowX = 'visible';\n elem.style.overflowY = 'visible';\n this.isValidationApplied = true;\n }\n if (validationForBottomRowPos) {\n if (isScroll && !frzCols && this.parent.height !== 'auto' && !this.parent.frozenRows\n && !this.parent.enableVirtualization) {\n var scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n var gHeight = this.parent.height.toString().indexOf('%') === -1 ?\n parseInt(this.parent.height, 10) : gcontent.offsetHeight;\n div.style.bottom = (gHeight - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n var rowsCount = this.parent.frozenRows ? this.parent.frozenRows + (rows.length - 1) : rows.length - 1;\n var rowsHeight = rowsCount * this.parent.getRowHeight();\n var position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n };\n /**\n * @param {Column} col - specfies the column\n * @returns {boolean} returns the whether column is grouped\n * @hidden\n */\n Edit.prototype.checkColumnIsGrouped = function (col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n };\n /**\n * @param {object} editors -specfies the editors\n * @returns {void}\n * @hidden\n */\n Edit.AddEditors = function (editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n };\n Edit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n };\n return Edit;\n}());\nexport { Edit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheets class\n * @private\n */\nvar Worksheets = /** @class */ (function (_super) {\n __extends(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\nexport { Worksheets };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Worksheet class\n * @private\n */\nvar Worksheet = /** @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\nexport { Worksheet };\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\nexport { HyperLink };\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\nexport { Grouping };\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\nexport { FreezePane };\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\nexport { MergeCell };\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (mergeCell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var mCell = _a[_i];\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n var intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (_this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n _this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(mergeCell);\n }\n return mergeCell;\n };\n return _this;\n }\n MergeCells.isIntersecting = function (base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n };\n return MergeCells;\n}(Array));\nexport { MergeCells };\n","/**\n * CellStyle class\n * @private\n */\nvar CellStyle = /** @class */ (function () {\n function CellStyle() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 10.5;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.strikeThrough = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n return CellStyle;\n}());\nexport { CellStyle };\n/**\n * Font Class\n * @private\n */\nvar Font = /** @class */ (function () {\n function Font() {\n this.sz = 10.5;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n this.strike = false;\n }\n return Font;\n}());\nexport { Font };\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\nexport { CellXfs };\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\nexport { Alignment };\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\nexport { CellStyleXfs };\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\nexport { CellStyles };\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\nexport { NumFmt };\n/**\n * Border class\n * @private\n */\nvar Border = /** @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\nexport { Border };\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @class */ (function () {\n function Borders() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n return Borders;\n}());\nexport { Borders };\n","/**\n * Column class\n * @private\n */\nvar Column = /** @class */ (function () {\n function Column() {\n }\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Row class\n * @private\n */\nvar Row = /** @class */ (function () {\n function Row() {\n }\n return Row;\n}());\nexport { Row };\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @class */ (function (_super) {\n __extends(Rows, _super);\n function Rows() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (row) {\n _this.push(row);\n };\n return _this;\n }\n return Rows;\n}(Array));\nexport { Rows };\n","/**\n * Image class\n * @private\n */\nvar Image = /** @class */ (function () {\n function Image() {\n }\n return Image;\n}());\nexport { Image };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Worksheet class\n * @private\n */\nvar Cell = /** @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\nexport { Cell };\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\nexport { Cells };\n","/* eslint-disable */\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n Utils.bitReverse = function (value) {\n return (Utils.reverseBits[value & 15] << 12\n | Utils.reverseBits[(value >> 4) & 15] << 8\n | Utils.reverseBits[(value >> 8) & 15] << 4\n | Utils.reverseBits[value >> 12]);\n };\n Utils.bitConverterToInt32 = function (value, index) {\n return value[index] | value[index + 1] << 8 | value[index + 2] << 16 | value[index + 3] << 24;\n };\n Utils.bitConverterToInt16 = function (value, index) {\n return value[index] | value[index + 1] << 8;\n };\n Utils.bitConverterToUInt32 = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterToUInt16 = function (value, index) {\n var uint = new Uint16Array(1);\n uint[0] = (value[index] | value[index + 1] << 8);\n return uint[0];\n };\n Utils.bitConverterUintToInt32 = function (value) {\n var uint = new Int32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToUint = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToInt16 = function (value) {\n var uint = new Int16Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.byteToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.byteIntToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.arrayCopy = function (source, sourceIndex, destination, destinationIndex, dataToCopy) {\n var temp = new Uint8Array(source.buffer, sourceIndex);\n var data = temp.subarray(0, dataToCopy);\n destination.set(data, destinationIndex);\n };\n Utils.mergeArray = function (arrayOne, arrayTwo) {\n var mergedArray = new Uint8Array(arrayOne.length + arrayTwo.length);\n mergedArray.set(arrayOne);\n mergedArray.set(arrayTwo, arrayOne.length);\n return mergedArray;\n };\n /**\n * @private\n */\n Utils.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var encode1;\n var encode2;\n var encode3;\n var encode4;\n var count = 0;\n var resultIndex = 0;\n /*let dataUrlPrefix: string = 'data:';*/\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (input.charAt(input.length - 2) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error('Invalid base64 input, bad content length.');\n }\n var output = new Uint8Array(totalLength | 0);\n while (count < input.length) {\n encode1 = keyStr.indexOf(input.charAt(count++));\n encode2 = keyStr.indexOf(input.charAt(count++));\n encode3 = keyStr.indexOf(input.charAt(count++));\n encode4 = keyStr.indexOf(input.charAt(count++));\n chr1 = (encode1 << 2) | (encode2 >> 4);\n chr2 = ((encode2 & 15) << 4) | (encode3 >> 2);\n chr3 = ((encode3 & 3) << 6) | encode4;\n output[resultIndex++] = chr1;\n if (encode3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (encode4 !== 64) {\n output[resultIndex++] = chr3;\n }\n }\n return output;\n };\n Utils.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n Utils.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return Utils;\n}());\nexport { Utils };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { Utils } from './index';\nvar DecompressorHuffmanTree = /** @class */ (function () {\n function DecompressorHuffmanTree(lengths) {\n this.buildTree(lengths);\n }\n DecompressorHuffmanTree.init = function () {\n var lengths;\n var index;\n // Generate huffman tree for lengths.\n lengths = new Uint8Array(288);\n index = 0;\n while (index < 144) {\n lengths[index++] = 8;\n }\n while (index < 256) {\n lengths[index++] = 9;\n }\n while (index < 280) {\n lengths[index++] = 7;\n }\n while (index < 288) {\n lengths[index++] = 8;\n }\n DecompressorHuffmanTree.m_LengthTree = new DecompressorHuffmanTree(lengths);\n // Generate huffman tree for distances.\n lengths = new Uint8Array(32);\n index = 0;\n while (index < 32) {\n lengths[index++] = 5;\n }\n DecompressorHuffmanTree.m_DistanceTree = new DecompressorHuffmanTree(lengths);\n };\n /// \n /// Prepares data for generating huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Array of code lengths.\n /// Calculated tree size.\n /// Code.\n DecompressorHuffmanTree.prototype.prepareData = function (blCount, nextCode, lengths) {\n var code = 0;\n var treeSize = 512;\n // Count number of codes for each code length.\n for (var i = 0; i < lengths.length; i++) {\n var length_1 = lengths[i];\n if (length_1 > 0) {\n blCount[length_1]++;\n }\n }\n for (var bits = 1; bits <= DecompressorHuffmanTree.MAX_BITLEN; bits++) {\n nextCode[bits] = code;\n code += blCount[bits] << (16 - bits);\n if (bits >= 10) {\n var start = nextCode[bits] & 0x1ff80;\n var end = code & 0x1ff80;\n treeSize += (end - start) >> (16 - bits);\n }\n }\n /* if( code != 65536 )\n throw new ZipException( \"Code lengths don't add up properly.\" );*/\n return { 'code': code, 'treeSize': treeSize };\n };\n /// \n /// Generates huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Precalculated code.\n /// Array of code lengths.\n /// Calculated size of the tree.\n /// Generated tree.\n DecompressorHuffmanTree.prototype.treeFromData = function (blCount, nextCode, lengths, code, treeSize) {\n var tree = new Int16Array(treeSize);\n var pointer = 512;\n var increment = 1 << 7;\n for (var bits = DecompressorHuffmanTree.MAX_BITLEN; bits >= 10; bits--) {\n var end = code & 0x1ff80;\n code -= blCount[bits] << (16 - bits);\n var start = code & 0x1ff80;\n for (var i = start; i < end; i += increment) {\n tree[Utils.bitReverse(i)] = Utils.bitConverterInt32ToInt16((-pointer << 4) | bits);\n pointer += 1 << (bits - 9);\n }\n }\n for (var i = 0; i < lengths.length; i++) {\n var bits = lengths[i];\n if (bits == 0) {\n continue;\n }\n code = nextCode[bits];\n var revcode = Utils.bitReverse(code);\n if (bits <= 9) {\n do {\n tree[revcode] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < 512);\n }\n else {\n var subTree = tree[revcode & 511];\n var treeLen = 1 << (subTree & 15);\n subTree = -(subTree >> 4);\n do {\n tree[subTree | (revcode >> 9)] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < treeLen);\n }\n nextCode[bits] = code + (1 << (16 - bits));\n }\n return tree;\n };\n /// \n /// Builds huffman tree from array of code lengths.\n /// \n /// Array of code lengths.\n DecompressorHuffmanTree.prototype.buildTree = function (lengths) {\n // Count of codes for each code length.\n var blCount = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n // Numerical value of the smallest code for each code length.\n var nextCode = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n var prepareData = this.prepareData(blCount, nextCode, lengths);\n this.m_Tree = this.treeFromData(blCount, nextCode, lengths, prepareData.code, prepareData.treeSize);\n };\n /// \n /// Reads and decompresses one symbol.\n /// \n /// \n /// \n DecompressorHuffmanTree.prototype.unpackSymbol = function (input) {\n var lookahead;\n var symbol;\n if ((lookahead = input.peekBits(9)) >= 0) {\n if ((symbol = this.m_Tree[lookahead]) >= 0) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n var subtree = -(symbol >> 4);\n var bitlen = symbol & 15;\n if ((lookahead = input.peekBits(bitlen)) >= 0) {\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n if ((symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[lookahead];\n if (symbol >= 0 && (symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n };\n Object.defineProperty(DecompressorHuffmanTree, \"lengthTree\", {\n /// \n /// GET huffman tree for encoding and decoding lengths.\n /// \n get: function () {\n return this.m_LengthTree;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DecompressorHuffmanTree, \"distanceTree\", {\n /// \n /// GET huffman tree for encoding and decoding distances.\n /// \n get: function () {\n return this.m_DistanceTree;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Maximum count of bits.\n /// \n DecompressorHuffmanTree.MAX_BITLEN = 15;\n return DecompressorHuffmanTree;\n}());\nexport { DecompressorHuffmanTree };\n/* eslint-enable */ \n","/* eslint-disable */\n/// \n/// Checksum calculator, based on Adler32 algorithm.\n/// \nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Current checksum.\n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumUpdate = function (checksum, buffer, offset, length) {\n var checkSumUInt = checksum;\n var s1 = checkSumUInt & 65535;\n var s2 = checkSumUInt >> this.DEF_CHECKSUM_BIT_OFFSET;\n while (length > 0) {\n var steps = Math.min(length, this.DEF_CHECKSUM_ITERATIONSCOUNT);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (buffer[offset++] & 255);\n s2 = s2 + s1;\n }\n s1 %= this.DEF_CHECKSUM_BASE;\n s2 %= this.DEF_CHECKSUM_BASE;\n }\n checkSumUInt = (s2 << this.DEF_CHECKSUM_BIT_OFFSET) | s1;\n checksum = checkSumUInt;\n };\n /// \n /// Generates checksum by calculating checksum of the\n /// given buffer.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumGenerate = function (buffer, offset, length) {\n var result = 1;\n ChecksumCalculator.ChecksumUpdate(result, buffer, offset, length);\n return result;\n };\n /// \n /// Bits offset, used in adler checksum calculation.\n /// \n ChecksumCalculator.DEF_CHECKSUM_BIT_OFFSET = 16;\n /// \n /// Lagrest prime, less than 65535\n /// \n ChecksumCalculator.DEF_CHECKSUM_BASE = 65521;\n /// \n /// Count of iteration used in calculated of the adler checksumm.\n /// \n ChecksumCalculator.DEF_CHECKSUM_ITERATIONSCOUNT = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { DecompressorHuffmanTree } from './decompressor-huffman-tree';\nimport { Utils } from './utils';\nimport { ChecksumCalculator } from './checksum-calculator';\nvar CompressedStreamReader = /** @class */ (function () {\n function CompressedStreamReader(stream, bNoWrap) {\n /// \n /// Code lengths for the code length alphabet.\n /// \n this.defaultHuffmanDynamicTree = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n /// \n /// Mask for compression method to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_METHOD_MASK = 15 << 8;\n /// \n /// Mask for compression info to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_INFO_MASK = 240 << 8;\n /// \n /// Mask for check bits to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FCHECK = 31;\n /// \n /// Mask for dictionary presence to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FDICT = 32;\n /// \n /// Mask for compression level to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FLEVEL = 192;\n /// \n /// Maximum size of the data window.\n /// \n this.DEF_MAX_WINDOW_SIZE = 65535;\n /// \n /// Maximum length of the repeatable block.\n /// \n this.DEF_HUFFMAN_REPEATE_MAX = 258;\n /// \n /// End of the block sign.\n /// \n this.DEF_HUFFMAN_END_BLOCK = 256;\n /// \n /// Minimal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE = 257;\n /// \n /// Maximal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE = 285;\n /// \n /// Maximal distance code.\n /// \n this.DEF_HUFFMAN_DISTANCE_MAXIMUMCODE = 29;\n /// \n /// Currently calculated checksum,\n /// based on Adler32 algorithm.\n /// \n this.mCheckSum = 1;\n /// \n /// Currently read 4 bytes.\n /// \n this.tBuffer = 0;\n /// \n /// Count of bits that are in buffer.\n /// \n this.mBufferedBits = 0;\n /// \n /// Temporary buffer.\n /// \n this.mTempBuffer = new Uint8Array(4);\n /// \n /// 32k buffer for unpacked data.\n /// \n this.mBlockBuffer = new Uint8Array(this.DEF_MAX_WINDOW_SIZE);\n /// \n /// No wrap mode.\n /// \n this.mbNoWrap = false;\n /// \n /// Window size, can not be larger than 32k.\n /// \n this.mWindowSize = 0;\n /// \n /// Current position in output stream.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mCurrentPosition = 0;\n /// \n /// Data length.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mDataLength = 0;\n /// \n /// Specifies wheather next block can to be read.\n /// Reading can be denied because the header of the last block have been read.\n /// \n this.mbCanReadNextBlock = true;\n /// \n /// Specifies wheather user can read more data from stream.\n /// \n this.mbCanReadMoreData = true;\n /// \n /// Specifies wheather checksum has been read.\n /// \n this.mbCheckSumRead = false;\n if (stream == null) {\n throw new DOMException('stream');\n }\n if (stream.length === 0) {\n throw new DOMException('stream - string can not be empty');\n }\n DecompressorHuffmanTree.init();\n this.mInputStream = new Stream(stream);\n this.mbNoWrap = bNoWrap;\n if (!this.mbNoWrap) {\n this.readZLibHeader();\n }\n this.decodeBlockHeader();\n }\n Object.defineProperty(CompressedStreamReader.prototype, \"mBuffer\", {\n get: function () {\n return this.tBuffer;\n },\n set: function (value) {\n this.tBuffer = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n /// \n /// Reads specified count of bits without adjusting position.\n /// \n /// Count of bits to be read.\n /// Read value.\n CompressedStreamReader.prototype.peekBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count > 32) {\n throw new DOMException('count', 'Count of bits is too large.');\n }\n // If buffered data is not enough to give result,\n // fill buffer.\n if (this.mBufferedBits < count) {\n this.fillBuffer();\n }\n // If you want to read 4 bytes and there is partial data in\n // buffer, than you will fail.\n if (this.mBufferedBits < count) {\n return -1;\n }\n // Create bitmask for reading of count bits\n var bitMask = ~(4294967295 << count);\n var result = Utils.bitConverterUintToInt32(this.mBuffer & bitMask);\n //Debug.WriteLine( /*new string( ' ', 32 - mBufferedBits + (int)( ( 32 - mBufferedBits ) / 8 ) ) + BitsToString( (int)mBuffer, mBufferedBits ) + \" \" + BitsToString( result, count ) +*/ \" \" + result.ToString() );\n return result;\n };\n CompressedStreamReader.prototype.fillBuffer = function () {\n var length = 4 - (this.mBufferedBits >> 3) -\n (((this.mBufferedBits & 7) !== 0) ? 1 : 0);\n if (length === 0) {\n return;\n }\n //TODO: fix this\n var bytesRead = this.mInputStream.read(this.mTempBuffer, 0, length);\n for (var i = 0; i < bytesRead; i++) {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer |\n (Utils.bitConverterInt32ToUint(this.mTempBuffer[i] << this.mBufferedBits)));\n this.mBufferedBits += 8;\n }\n //TODO: fix this\n };\n /// \n /// Skips specified count of bits.\n /// \n /// Count of bits to be skipped.\n CompressedStreamReader.prototype.skipBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count === 0) {\n return;\n }\n if (count >= this.mBufferedBits) {\n count -= this.mBufferedBits;\n this.mBufferedBits = 0;\n this.mBuffer = 0;\n // if something left, skip it.\n if (count > 0) {\n // Skip entire bytes.\n this.mInputStream.position += (count >> 3); //TODO: fix this\n count &= 7;\n // Skip bits.\n if (count > 0) {\n this.fillBuffer();\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n }\n }\n else {\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n };\n Object.defineProperty(CompressedStreamReader.prototype, \"availableBits\", {\n get: function () {\n return this.mBufferedBits;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Reads ZLib header with compression method and flags.\n /// \n CompressedStreamReader.prototype.readZLibHeader = function () {\n // first 8 bits - compression Method and flags\n // 8 other - flags\n var header = this.readInt16();\n //Debug.WriteLine( BitsToString( header ) );\n if (header === -1) {\n throw new DOMException('Header of the stream can not be read.');\n }\n if (header % 31 !== 0) {\n throw new DOMException('Header checksum illegal');\n }\n if ((header & this.DEF_HEADER_METHOD_MASK) !== (8 << 8)) {\n throw new DOMException('Unsupported compression method.');\n }\n this.mWindowSize = Math.pow(2, ((header & this.DEF_HEADER_INFO_MASK) >> 12) + 8);\n if (this.mWindowSize > 65535) {\n throw new DOMException('Unsupported window size for deflate compression method.');\n }\n if ((header & this.DEF_HEADER_FLAGS_FDICT) >> 5 === 1) {\n // Get dictionary.\n throw new DOMException('Custom dictionary is not supported at the moment.');\n }\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16 = function () {\n var result = (this.readBits(8) << 8);\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Reads specified count of bits from stream.\n /// \n /// Count of bits to be read.\n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readBits = function (count) {\n var result = this.peekBits(count);\n if (result === -1) {\n return -1;\n }\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n return result;\n };\n /// \n /// Reads and decodes block of data.\n /// \n /// True if buffer was empty and new data was read, otherwise - False.\n CompressedStreamReader.prototype.decodeBlockHeader = function () {\n if (!this.mbCanReadNextBlock) {\n return false;\n }\n var bFinalBlock = this.readBits(1);\n if (bFinalBlock === -1) {\n return false;\n }\n var blockType = this.readBits(2);\n if (blockType === -1) {\n return false;\n }\n this.mbCanReadNextBlock = (bFinalBlock === 0);\n // ChecksumReset();\n switch (blockType) {\n case 0:\n // Uncompressed data\n this.mbReadingUncompressed = true;\n this.skipToBoundary();\n var length_1 = this.readInt16Inverted();\n var lengthComplement = this.readInt16Inverted();\n if (length_1 !== (lengthComplement ^ 0xffff)) {\n throw new DOMException('Wrong block length.');\n }\n if (length_1 > 65535) {\n throw new DOMException('Uncompressed block length can not be more than 65535.');\n }\n this.mUncompressedDataLength = length_1;\n this.mCurrentLengthTree = null;\n this.mCurrentDistanceTree = null;\n break;\n case 1:\n // Compressed data with fixed huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n this.mCurrentLengthTree = DecompressorHuffmanTree.lengthTree;\n this.mCurrentDistanceTree = DecompressorHuffmanTree.distanceTree;\n break;\n case 2:\n // Compressed data with dynamic huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n var trees = this.decodeDynamicHeader(this.mCurrentLengthTree, this.mCurrentDistanceTree);\n this.mCurrentLengthTree = trees.lengthTree;\n this.mCurrentDistanceTree = trees.distanceTree;\n break;\n default:\n throw new DOMException('Wrong block type.');\n }\n return true;\n };\n /// \n /// Discards left-most partially used byte.\n /// \n CompressedStreamReader.prototype.skipToBoundary = function () {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> (this.mBufferedBits & 7));\n this.mBufferedBits &= ~7;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16Inverted = function () {\n var result = (this.readBits(8));\n result |= this.readBits(8) << 8;\n return result;\n };\n /// \n /// Reades dynamic huffman codes from block header.\n /// \n /// Literals/Lengths tree.\n /// Distances tree.\n CompressedStreamReader.prototype.decodeDynamicHeader = function (lengthTree, distanceTree) {\n var bLastSymbol = 0;\n var iLengthsCount = this.readBits(5);\n var iDistancesCount = this.readBits(5);\n var iCodeLengthsCount = this.readBits(4);\n if (iLengthsCount < 0 || iDistancesCount < 0 || iCodeLengthsCount < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n iLengthsCount += 257;\n iDistancesCount += 1;\n var iResultingCodeLengthsCount = iLengthsCount + iDistancesCount;\n var arrResultingCodeLengths = new Uint8Array(iResultingCodeLengthsCount);\n var arrDecoderCodeLengths = new Uint8Array(19);\n iCodeLengthsCount += 4;\n var iCurrentCode = 0;\n while (iCurrentCode < iCodeLengthsCount) {\n var len = this.readBits(3);\n if (len < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n arrDecoderCodeLengths[this.defaultHuffmanDynamicTree[iCurrentCode++]] = len;\n }\n var treeInternalDecoder = new DecompressorHuffmanTree(arrDecoderCodeLengths);\n iCurrentCode = 0;\n for (;;) {\n var symbol = void 0;\n var bNeedBreak = false;\n symbol = treeInternalDecoder.unpackSymbol(this);\n while ((symbol & ~15) === 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol = symbol;\n if (iCurrentCode === iResultingCodeLengthsCount) {\n bNeedBreak = true;\n break;\n }\n symbol = treeInternalDecoder.unpackSymbol(this);\n }\n if (bNeedBreak) {\n break;\n }\n if (symbol < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n if (symbol >= 17) {\n bLastSymbol = 0;\n }\n else if (iCurrentCode === 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n var miRepSymbol = symbol - 16;\n var bits = CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS[miRepSymbol];\n var count = this.readBits(bits);\n if (count < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n count += CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS[miRepSymbol];\n if (iCurrentCode + count > iResultingCodeLengthsCount) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n while (count-- > 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol;\n }\n if (iCurrentCode === iResultingCodeLengthsCount) {\n break;\n }\n }\n var tempArray = new Uint8Array(iLengthsCount);\n tempArray.set(arrResultingCodeLengths.subarray(0, iLengthsCount), 0);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n //Array.copy( arrResultingCodeLengths, 0, tempArray, 0, iLengthsCount );\n lengthTree = new DecompressorHuffmanTree(tempArray);\n tempArray = arrResultingCodeLengths.slice(iLengthsCount, iLengthsCount + iDistancesCount);\n //Array.copy( arrResultingCodeLengths, iLengthsCount, tempArray, 0, iDistancesCount );\n distanceTree = new DecompressorHuffmanTree(tempArray);\n return { 'lengthTree': lengthTree, 'distanceTree': distanceTree };\n };\n /// \n /// Decodes huffman codes.\n /// \n /// True if some data was read.\n CompressedStreamReader.prototype.readHuffman = function () {\n var free = this.DEF_MAX_WINDOW_SIZE - (this.mDataLength - this.mCurrentPosition);\n var dataRead = false;\n //long maxdistance = DEF_MAX_WINDOW_SIZE >> 1;\n var readdata = {};\n // DEF_HUFFMAN_REPEATE_MAX - longest repeatable block, we should always reserve space for it because\n // if we should not, we will have buffer overrun.\n while (free >= this.DEF_HUFFMAN_REPEATE_MAX) {\n var symbol = void 0;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n // Only codes 0..255 are valid independent symbols.\n while (((symbol) & ~0xff) === 0) {\n readdata[(this.mDataLength + 1) % this.DEF_MAX_WINDOW_SIZE] = symbol;\n this.mBlockBuffer[this.mDataLength++ % this.DEF_MAX_WINDOW_SIZE] = symbol;\n dataRead = true;\n if (--free < this.DEF_HUFFMAN_REPEATE_MAX) {\n return true;\n }\n //if( (mDataLength - mCurrentPosition ) < maxdistance ) return true;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n }\n if (symbol < this.DEF_HUFFMAN_LENGTH_MINIMUMCODE) {\n if (symbol < this.DEF_HUFFMAN_END_BLOCK) {\n throw new DOMException('Illegal code.');\n }\n var numDataRead = dataRead ? 1 : 0;\n this.mbCanReadMoreData = this.decodeBlockHeader();\n var numReadMore = (this.mbCanReadMoreData) ? 1 : 0;\n return (numDataRead | numReadMore) ? true : false;\n }\n if (symbol > this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE) {\n throw new DOMException('Illegal repeat code length.');\n }\n var iRepeatLength = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n var iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatLength += extra;\n }\n // Unpack repeat distance.\n symbol = this.mCurrentDistanceTree.unpackSymbol(this);\n if (symbol < 0 || symbol > CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE.length) {\n throw new DOMException('Wrong distance code.');\n }\n var iRepeatDistance = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE[symbol];\n iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION[symbol];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatDistance += extra;\n }\n // Copy data in slow repeat mode\n for (var i = 0; i < iRepeatLength; i++) {\n this.mBlockBuffer[this.mDataLength % this.DEF_MAX_WINDOW_SIZE] =\n this.mBlockBuffer[(this.mDataLength - iRepeatDistance) % this.DEF_MAX_WINDOW_SIZE];\n this.mDataLength++;\n free--;\n }\n dataRead = true;\n }\n return dataRead;\n };\n /// \n /// Reads data to buffer.\n /// \n /// Output buffer for data.\n /// Offset in output data.\n /// Length of the data to be read.\n /// Count of bytes actually read.\n CompressedStreamReader.prototype.read = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset', 'Offset does not belong to specified buffer.');\n }\n if (length < 0 || length > buffer.length - offset) {\n throw new DOMException('length', 'Length is illegal.');\n }\n var initialLength = length;\n while (length > 0) {\n // Read from internal buffer.\n if (this.mCurrentPosition < this.mDataLength) {\n // Position in buffer array.\n var inBlockPosition = (this.mCurrentPosition % this.DEF_MAX_WINDOW_SIZE);\n // We can not read more than we have in buffer at once,\n // and we not read more than till the array end.\n var dataToCopy = Math.min(this.DEF_MAX_WINDOW_SIZE - inBlockPosition, (this.mDataLength - this.mCurrentPosition));\n // Reading not more, than the rest of the buffer.\n dataToCopy = Math.min(dataToCopy, length);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n // Copy data.\n //Array.Copy( mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy );\n //buffer.set(this.mBlockBuffer.slice(inBlockPosition, dataToCopy), offset);\n Utils.arrayCopy(this.mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy);\n // Correct position, length,\n this.mCurrentPosition += dataToCopy;\n offset += dataToCopy;\n length -= dataToCopy;\n }\n else {\n if (!this.mbCanReadMoreData) {\n break;\n }\n var oldDataLength = this.mDataLength;\n if (!this.mbReadingUncompressed) {\n if (!this.readHuffman()) {\n break;\n }\n }\n else {\n if (this.mUncompressedDataLength === 0) {\n // If there is no more data in stream, just exit.\n this.mbCanReadMoreData = this.decodeBlockHeader();\n if (!(this.mbCanReadMoreData)) {\n break;\n }\n }\n else {\n // Position of the data end in block buffer.\n var inBlockPosition = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n var dataToRead = Math.min(this.mUncompressedDataLength, this.DEF_MAX_WINDOW_SIZE - inBlockPosition);\n var dataRead = this.readPackedBytes(this.mBlockBuffer, inBlockPosition, dataToRead);\n if (dataToRead !== dataRead) {\n throw new DOMException('Not enough data in stream.');\n }\n this.mUncompressedDataLength -= dataRead;\n this.mDataLength += dataRead;\n }\n }\n if (oldDataLength < this.mDataLength) {\n var start = (oldDataLength % this.DEF_MAX_WINDOW_SIZE);\n var end = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n if (start < end) {\n this.checksumUpdate(this.mBlockBuffer, start, end - start);\n }\n else {\n this.checksumUpdate(this.mBlockBuffer, start, this.DEF_MAX_WINDOW_SIZE - start);\n if (end > 0) {\n this.checksumUpdate(this.mBlockBuffer, 0, end);\n }\n }\n }\n }\n }\n if (!this.mbCanReadMoreData && !this.mbCheckSumRead && !this.mbNoWrap) {\n this.skipToBoundary();\n var checkSum = this.readInt32();\n //Debug.Assert( checkSum == mCheckSum, \"\" );\n if (checkSum !== this.mCheckSum) {\n throw new DOMException('Checksum check failed.');\n }\n this.mbCheckSumRead = true;\n }\n return initialLength - length;\n };\n /// \n /// Reads array of bytes.\n /// \n /// Output buffer.\n /// Offset in output buffer.\n /// Length of the data to be read.\n /// Count of bytes actually read to the buffer.\n CompressedStreamReader.prototype.readPackedBytes = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset\", \"Offset can not be less than zero or greater than buffer length - 1.');\n }\n if (length < 0) {\n throw new DOMException('length\", \"Length can not be less than zero.');\n }\n if (length > buffer.length - offset) {\n throw new DOMException('length\", \"Length is too large.');\n }\n if ((this.mBufferedBits & 7) !== 0) {\n throw new DOMException('Reading of unalligned data is not supported.');\n }\n if (length === 0) {\n return 0;\n }\n var result = 0;\n while (this.mBufferedBits > 0 && length > 0) {\n buffer[offset++] = (this.mBuffer);\n this.mBufferedBits -= 8;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> 8);\n length--;\n result++;\n }\n if (length > 0) {\n //TODO: Fix this.\n result += this.mInputStream.read(buffer, offset, length);\n }\n return result;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt32 = function () {\n var result = this.readBits(8) << 24;\n result |= this.readBits(8) << 16;\n result |= this.readBits(8) << 8;\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n CompressedStreamReader.prototype.checksumUpdate = function (buffer, offset, length) {\n ChecksumCalculator.ChecksumUpdate(this.mCheckSum, buffer, offset, length);\n };\n CompressedStreamReader.DEF_REVERSE_BITS = new Uint8Array([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]);\n /// \n /// Minimum count of repetions.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS = [3, 3, 11];\n /// \n /// Bits, that responds for different repetion modes.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS = [2, 3, 7];\n /// \n /// Length bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE = [\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258\n ];\n /// \n /// Length extended bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION = [\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,\n 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0\n ];\n /// \n /// Distance bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE = [\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577\n ];\n /// \n /// Distance extanded bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION = [\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,\n 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,\n 12, 12, 13, 13\n ];\n return CompressedStreamReader;\n}());\nexport { CompressedStreamReader };\nvar Stream = /** @class */ (function () {\n function Stream(input) {\n this.position = 0;\n this.inputStream = new Uint8Array(input.buffer);\n }\n Object.defineProperty(Stream.prototype, \"length\", {\n get: function () {\n return this.inputStream.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n Stream.prototype.read = function (buffer, start, length) {\n var temp = new Uint8Array(this.inputStream.buffer, this.position + start);\n var data = temp.subarray(0, length);\n buffer.set(data, 0);\n this.position += data.byteLength;\n return data.byteLength;\n };\n Stream.prototype.readByte = function () {\n return this.inputStream[this.position++];\n };\n Stream.prototype.write = function (inputBuffer, offset, count) {\n Utils.arrayCopy(inputBuffer, 0, this.inputStream, this.position + offset, count);\n // this.inputStream = new Uint8Array(this.inputStream.buffer, this.position + offset);\n // this.inputStream.set(inputBuffer, offset);\n this.position += count;\n };\n Stream.prototype.toByteArray = function () {\n return new Uint8Array(this.inputStream.buffer);\n };\n return Stream;\n}());\nexport { Stream };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { CompressedStreamWriter, Stream, CompressedStreamReader } from './index';\nimport { Save } from '@syncfusion/ej2-file-utils';\nimport { Utils } from './utils';\nvar CRC32TABLE = [];\n/// \n/// Size of the int value in bytes.\n/// \nvar INT_SIZE = 4;\n/// \n/// Size of the short value in bytes.\n/// \nvar SHORT_SIZE = 2;\n/// \n/// End of central directory signature.\n/// \nvar CentralDirectoryEndSignature = 0x06054b50;\n/// \n/// Offset to the size field in the End of central directory record.\n/// \nvar CentralDirSizeOffset = 12;\n/// \n/// Central header signature.\n/// \nvar CentralHeaderSignature = 0x02014b50;\n/// \n/// Buffer size.\n/// \nvar BufferSize = 4096;\n/**\n * class provide compression library\n * ```typescript\n * let archive = new ZipArchive();\n * archive.compressionLevel = 'Normal';\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * archive.addItem(archiveItem);\n * archive.save(fileName.zip);\n * ```\n */\nvar ZipArchive = /** @class */ (function () {\n /**\n * constructor for creating ZipArchive instance\n */\n function ZipArchive() {\n if (CRC32TABLE.length === 0) {\n ZipArchive.initCrc32Table();\n }\n this.files = [];\n this.level = 'Normal';\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(ZipArchive.prototype, \"items\", {\n get: function () {\n return this.files;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"compressionLevel\", {\n /**\n * gets compression level\n */\n get: function () {\n return this.level;\n },\n /**\n * sets compression level\n */\n set: function (level) {\n this.level = level;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"length\", {\n /**\n * gets items count\n */\n get: function () {\n if (this.files === undefined) {\n return 0;\n }\n return this.files.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * add new item to archive\n * @param {ZipArchiveItem} item - item to be added\n * @returns {void}\n */\n ZipArchive.prototype.addItem = function (item) {\n if (item === null || item === undefined) {\n throw new Error('ArgumentException: item cannot be null or undefined');\n }\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n if (file.name === item.name) {\n throw new Error('item with same name already exist');\n }\n }\n }\n this.files.push(item);\n };\n /**\n * add new directory to archive\n * @param directoryName directoryName to be created\n * @returns {void}\n */\n ZipArchive.prototype.addDirectory = function (directoryName) {\n if (directoryName === null || directoryName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (directoryName.length === 0) {\n throw new Error('ArgumentException: string cannot be empty');\n }\n if (directoryName.slice(-1) !== '/') {\n directoryName += '/';\n }\n if (this.files.indexOf(directoryName) !== -1) {\n throw new Error('item with same name already exist');\n }\n this.files.push(directoryName);\n };\n /**\n * gets item at specified index\n * @param {number} index - item index\n * @returns {ZipArchiveItem}\n */\n ZipArchive.prototype.getItem = function (index) {\n if (index >= 0 && index < this.files.length) {\n return this.files[index];\n }\n return undefined;\n };\n /**\n * determines whether an element is in the collection\n * @param {string | ZipArchiveItem} item - item to search\n * @returns {boolean}\n */\n ZipArchive.prototype.contains = function (item) {\n return this.files.indexOf(item) !== -1 ? true : false;\n };\n ZipArchive.prototype.open = function (base64String) {\n //return promise = new Promise((resolve: Function, reject: Function) => {\n var zipArchive = this;\n var zipByteArray = Utils.encodedString(base64String);\n if (zipByteArray.length == 0)\n throw new DOMException(\"stream\");\n var stream = new Stream(zipByteArray);\n //let lCentralDirEndPosition = this.findValueFromEnd( arrBuffer, Constants.CentralDirectoryEndSignature, 65557 );\n var lCentralDirEndPosition = ZipArchive.findValueFromEnd(stream, CentralDirectoryEndSignature, 65557);\n if (lCentralDirEndPosition < 0)\n throw new DOMException(\"Can't locate end of central directory record. Possible wrong file format or archive is corrupt.\");\n // Step2. Locate central directory and iterate through all items\n stream.position = lCentralDirEndPosition + CentralDirSizeOffset;\n var iCentralDirSize = ZipArchive.ReadInt32(stream);\n var lCentralDirPosition = lCentralDirEndPosition - iCentralDirSize;\n // verify that this is really central directory\n stream.position = lCentralDirPosition;\n this.readCentralDirectoryDataAndExtractItems(stream);\n //});\n // let zipArchive: ZipArchive = this;\n //let promise: Promise;\n // return promise = new Promise((resolve: Function, reject: Function) => {\n // let reader: FileReader = new FileReader();\n // reader.onload = (e: Event) => {\n // let data: Uint8Array = new Uint8Array((e.target as any).result);\n // let zipReader: ZipReader = new ZipReader(data);\n // zipReader.readEntries().then((entries: ZipEntry[]) => {\n // for (let i: number = 0; i < entries.length; i++) {\n // let entry: ZipEntry = entries[i];\n // let item: ZipArchiveItem = new ZipArchiveItem(zipArchive, entry.fileName);\n // item.data = entry.data;\n // item.compressionMethod = entry.compressionMethod;\n // item.crc = entry.crc;\n // item.lastModified = entry.lastModified;\n // item.lastModifiedDate = entry.lastModifiedDate;\n // item.size = entry.size;\n // item.uncompressedSize = entry.uncompressedSize;\n // zipArchive.addItem(item);\n // }\n // resolve(zipArchive);\n // });\n // };\n // reader.readAsArrayBuffer(fileName);\n // });\n };\n /// \n /// Read central directory record from the stream.\n /// \n /// Stream to read from.\n ZipArchive.prototype.readCentralDirectoryDataAndExtractItems = function (stream) {\n if (stream == null)\n throw new DOMException(\"stream\");\n var itemHelper;\n while (ZipArchive.ReadInt32(stream) == CentralHeaderSignature) {\n itemHelper = new ZipArchiveItemHelper();\n itemHelper.readCentralDirectoryData(stream);\n itemHelper;\n // let item: ZipArchiveItem = new ZipArchiveItem(this);\n // item.ReadCentralDirectoryData(stream);\n // m_arrItems.Add(item);\n }\n itemHelper.readData(stream, itemHelper.checkCrc);\n itemHelper.decompressData();\n this.files.push(new ZipArchiveItem(itemHelper.unCompressedStream.buffer, itemHelper.name));\n };\n /**\n * save archive with specified file name\n * @param {string} fileName save archive with specified file name\n * @returns {Promise}\n */\n ZipArchive.prototype.save = function (fileName) {\n if (fileName === null || fileName === undefined || fileName.length === 0) {\n throw new Error('ArgumentException: fileName cannot be null or undefined');\n }\n if (this.files.length === 0) {\n throw new Error('InvalidOperation');\n }\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal(fileName, false).then(function () {\n resolve(zipArchive);\n });\n });\n };\n /**\n * Save archive as blob\n * @return {Promise}\n */\n ZipArchive.prototype.saveAsBlob = function () {\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal('', true).then(function (blob) {\n resolve(blob);\n });\n });\n };\n ZipArchive.prototype.saveInternal = function (fileName, skipFileSave) {\n var _this = this;\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n var zipData = [];\n var dirLength = 0;\n for (var i = 0; i < zipArchive.files.length; i++) {\n var compressedObject = _this.getCompressedData(_this.files[i]);\n compressedObject.then(function (data) {\n dirLength = zipArchive.constructZippedObject(zipData, data, dirLength, data.isDirectory);\n if (zipData.length === zipArchive.files.length) {\n var blob = zipArchive.writeZippedContent(fileName, zipData, dirLength, skipFileSave);\n resolve(blob);\n }\n });\n }\n });\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchive.prototype.destroy = function () {\n if (this.files !== undefined && this.files.length > 0) {\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n file.destroy();\n }\n file = undefined;\n }\n this.files = [];\n }\n this.files = undefined;\n this.level = undefined;\n };\n ZipArchive.prototype.getCompressedData = function (item) {\n var zipArchive = this;\n var promise = new Promise(function (resolve, reject) {\n if (item instanceof ZipArchiveItem) {\n var reader_1 = new FileReader();\n reader_1.onload = function () {\n var input = new Uint8Array(reader_1.result);\n var data = {\n fileName: item.name, crc32Value: 0, compressedData: [],\n compressedSize: undefined, uncompressedDataSize: input.length, compressionType: undefined,\n isDirectory: false\n };\n if (zipArchive.level === 'Normal') {\n zipArchive.compressData(input, data, CRC32TABLE);\n var length_1 = 0;\n for (var i = 0; i < data.compressedData.length; i++) {\n length_1 += data.compressedData[i].length;\n }\n data.compressedSize = length_1;\n data.compressionType = '\\x08\\x00'; //Deflated = 8\n }\n else {\n data.compressedSize = input.length;\n data.crc32Value = zipArchive.calculateCrc32Value(0, input, CRC32TABLE);\n data.compressionType = '\\x00\\x00'; // Stored = 0\n data.compressedData.push(input);\n }\n resolve(data);\n };\n reader_1.readAsArrayBuffer(item.data);\n }\n else {\n var data = {\n fileName: item, crc32Value: 0, compressedData: '', compressedSize: 0, uncompressedDataSize: 0,\n compressionType: '\\x00\\x00', isDirectory: true\n };\n resolve(data);\n }\n });\n return promise;\n };\n ZipArchive.prototype.compressData = function (input, data, crc32Table) {\n var compressor = new CompressedStreamWriter(true);\n var currentIndex = 0;\n var nextIndex = 0;\n do {\n if (currentIndex >= input.length) {\n compressor.close();\n break;\n }\n nextIndex = Math.min(input.length, currentIndex + 16384);\n var subArray = input.subarray(currentIndex, nextIndex);\n data.crc32Value = this.calculateCrc32Value(data.crc32Value, subArray, crc32Table);\n compressor.write(subArray, 0, nextIndex - currentIndex);\n currentIndex = nextIndex;\n } while (currentIndex <= input.length);\n data.compressedData = compressor.compressedData;\n compressor.destroy();\n };\n ZipArchive.prototype.constructZippedObject = function (zipParts, data, dirLength, isDirectory) {\n var extFileAttr = 0;\n var date = new Date();\n if (isDirectory) {\n extFileAttr = extFileAttr | 0x00010; // directory flag\n }\n extFileAttr = extFileAttr | (0 & 0x3F);\n var header = this.writeHeader(data, date);\n var localHeader = 'PK\\x03\\x04' + header + data.fileName;\n var centralDir = this.writeCentralDirectory(data, header, dirLength, extFileAttr);\n zipParts.push({ localHeader: localHeader, centralDir: centralDir, compressedData: data });\n return dirLength + localHeader.length + data.compressedSize;\n };\n ZipArchive.prototype.writeHeader = function (data, date) {\n var zipHeader = '';\n zipHeader += '\\x0A\\x00' + '\\x00\\x00'; // version needed to extract & general purpose bit flag\n zipHeader += data.compressionType; // compression method Deflate=8,Stored=0\n zipHeader += this.getBytes(this.getModifiedTime(date), 2); // last modified Time\n zipHeader += this.getBytes(this.getModifiedDate(date), 2); // last modified date\n zipHeader += this.getBytes(data.crc32Value, 4); // crc-32 value\n zipHeader += this.getBytes(data.compressedSize, 4); // compressed file size\n zipHeader += this.getBytes(data.uncompressedDataSize, 4); // uncompressed file size\n zipHeader += this.getBytes(data.fileName.length, 2); // file name length\n zipHeader += this.getBytes(0, 2); // extra field length\n return zipHeader;\n };\n ZipArchive.prototype.writeZippedContent = function (fileName, zipData, localDirLen, skipFileSave) {\n var cenDirLen = 0;\n var buffer = [];\n for (var i = 0; i < zipData.length; i++) {\n var item = zipData[i];\n cenDirLen += item.centralDir.length;\n buffer.push(this.getArrayBuffer(item.localHeader));\n while (item.compressedData.compressedData.length) {\n buffer.push(item.compressedData.compressedData.shift().buffer);\n }\n }\n for (var i = 0; i < zipData.length; i++) {\n buffer.push(this.getArrayBuffer(zipData[i].centralDir));\n }\n buffer.push(this.getArrayBuffer(this.writeFooter(zipData, cenDirLen, localDirLen)));\n var blob = new Blob(buffer, { type: 'application/zip' });\n if (!skipFileSave) {\n Save.save(fileName, blob);\n }\n return blob;\n };\n ZipArchive.prototype.writeCentralDirectory = function (data, localHeader, offset, externalFileAttribute) {\n var directoryHeader = 'PK\\x01\\x02' +\n this.getBytes(0x0014, 2) + localHeader + // inherit from file header\n this.getBytes(0, 2) + // comment length\n '\\x00\\x00' + '\\x00\\x00' + // internal file attributes \n this.getBytes(externalFileAttribute, 4) + // external file attributes\n this.getBytes(offset, 4) + // local fileHeader relative offset\n data.fileName;\n return directoryHeader;\n };\n ZipArchive.prototype.writeFooter = function (zipData, centralLength, localLength) {\n var dirEnd = 'PK\\x05\\x06' + '\\x00\\x00' + '\\x00\\x00' +\n this.getBytes(zipData.length, 2) + this.getBytes(zipData.length, 2) +\n this.getBytes(centralLength, 4) + this.getBytes(localLength, 4) +\n this.getBytes(0, 2);\n return dirEnd;\n };\n ZipArchive.prototype.getArrayBuffer = function (input) {\n var a = new Uint8Array(input.length);\n for (var j = 0; j < input.length; ++j) {\n a[j] = input.charCodeAt(j) & 0xFF;\n }\n return a.buffer;\n };\n ZipArchive.prototype.getBytes = function (value, offset) {\n var bytes = '';\n for (var i = 0; i < offset; i++) {\n bytes += String.fromCharCode(value & 0xff);\n value = value >>> 8;\n }\n return bytes;\n };\n ZipArchive.prototype.getModifiedTime = function (date) {\n var modTime = date.getHours();\n modTime = modTime << 6;\n modTime = modTime | date.getMinutes();\n modTime = modTime << 5;\n return modTime = modTime | date.getSeconds() / 2;\n };\n ZipArchive.prototype.getModifiedDate = function (date) {\n var modiDate = date.getFullYear() - 1980;\n modiDate = modiDate << 4;\n modiDate = modiDate | (date.getMonth() + 1);\n modiDate = modiDate << 5;\n return modiDate = modiDate | date.getDate();\n };\n ZipArchive.prototype.calculateCrc32Value = function (crc32Value, input, crc32Table) {\n crc32Value ^= -1;\n for (var i = 0; i < input.length; i++) {\n crc32Value = (crc32Value >>> 8) ^ crc32Table[(crc32Value ^ input[i]) & 0xFF];\n }\n return (crc32Value ^ (-1));\n };\n /**\n * construct cyclic redundancy code table\n * @private\n */\n ZipArchive.initCrc32Table = function () {\n var i;\n for (var j = 0; j < 256; j++) {\n i = j;\n for (var k = 0; k < 8; k++) {\n i = ((i & 1) ? (0xEDB88320 ^ (i >>> 1)) : (i >>> 1));\n }\n CRC32TABLE[j] = i;\n }\n };\n ZipArchive.findValueFromEnd = function (stream, value, maxCount) {\n if (stream == null)\n throw new DOMException(\"stream\");\n // if( !stream.CanSeek || !stream.CanRead )\n // throw new ArgumentOutOfRangeException( \"We need to have seekable and readable stream.\" );\n // read last 4 bytes and compare with required value\n var lStreamSize = stream.inputStream.buffer.byteLength;\n if (lStreamSize < 4)\n return -1;\n var arrBuffer = new Uint8Array(4);\n var lLastPos = Math.max(0, lStreamSize - maxCount);\n var lCurrentPosition = lStreamSize - 1 - INT_SIZE;\n stream.position = lCurrentPosition;\n stream.read(arrBuffer, 0, INT_SIZE);\n var uiCurValue = arrBuffer[0];\n var bFound = (uiCurValue == value);\n if (!bFound) {\n while (lCurrentPosition > lLastPos) {\n // remove unnecessary byte and replace it with new value.\n uiCurValue <<= 8;\n lCurrentPosition--;\n stream.position = lCurrentPosition;\n uiCurValue += stream.readByte();\n if (uiCurValue == value) {\n bFound = true;\n break;\n }\n }\n }\n return bFound ? lCurrentPosition : -1;\n };\n /// \n /// Extracts Int32 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt32 = function (stream) {\n var buffer = new Uint8Array(INT_SIZE);\n if (stream.read(buffer, 0, INT_SIZE) != INT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt32(buffer, 0);\n };\n /// \n /// Extracts Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt16 = function (stream) {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n };\n /// \n /// Extracts unsigned Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadUInt16 = function (stream) {\n {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n }\n };\n return ZipArchive;\n}());\nexport { ZipArchive };\nvar ZipArchiveItemHelper = /** @class */ (function () {\n function ZipArchiveItemHelper() {\n /// \n /// Zip header signature.\n /// \n this.headerSignature = 0x04034b50;\n /// \n /// Indicates whether we should check Crc value when reading item's data. Check\n /// is performed when user gets access to decompressed data for the first time.\n /// \n this.checkCrc = true;\n /// \n /// Crc.\n /// \n this.crc32 = 0;\n }\n /// \n /// Read data from the stream based on the central directory.\n /// \n /// Stream to read data from, stream.Position must point at just after correct file header.\n ZipArchiveItemHelper.prototype.readCentralDirectoryData = function (stream) {\n // on the current moment we ignore \"version made by\" and \"version needed to extract\" fields.\n stream.position += 4;\n this.options = ZipArchive.ReadInt16(stream);\n this.compressionMethod = ZipArchive.ReadInt16(stream);\n this.checkCrc = (this.compressionMethod != 99); //COmpression.Defalte != SecurityConstants.AES\n //m_bCompressed = true;\n // on the current moment we ignore \"last mod file time\" and \"last mod file date\" fields.\n var lastModified = ZipArchive.ReadInt32(stream);\n //LastModified = ConvertToDateTime(lastModified);\n this.crc32 = Utils.bitConverterToUInt32(ZipArchive.ReadInt32(stream));\n this.compressedSize = ZipArchive.ReadInt32(stream);\n this.originalSize = ZipArchive.ReadInt32(stream);\n var iFileNameLength = ZipArchive.ReadInt16(stream);\n var iExtraFieldLenth = ZipArchive.ReadInt16(stream);\n var iCommentLength = ZipArchive.ReadInt16(stream);\n // on the current moment we ignore and \"disk number start\" (2 bytes),\n // \"internal file attributes\" (2 bytes).\n stream.position += 4;\n this.externalAttributes = ZipArchive.ReadInt32(stream);\n this.localHeaderOffset = ZipArchive.ReadInt32(stream);\n var arrBuffer = new Uint8Array(iFileNameLength);\n stream.read(arrBuffer, 0, iFileNameLength);\n var m_strItemName = Utils.byteToString(arrBuffer);\n m_strItemName = m_strItemName.replace(\"\\\\\", \"/\");\n this.name = m_strItemName;\n stream.position += iExtraFieldLenth + iCommentLength;\n if (this.options != 0)\n this.options = 0;\n };\n /// \n /// Reads zipped data from the stream.\n /// \n /// Stream to read data from.\n /// Indicates whether we should check crc value after data decompression.\n ZipArchiveItemHelper.prototype.readData = function (stream, checkCrc) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n stream.position = this.localHeaderOffset;\n this.checkCrc = checkCrc;\n this.readLocalHeader(stream);\n this.readCompressedData(stream);\n };\n ZipArchiveItemHelper.prototype.decompressData = function () {\n if (this.compressionMethod == 8) {\n if (this.originalSize > 0) {\n this.decompressDataOld();\n }\n }\n };\n ZipArchiveItemHelper.prototype.decompressDataOld = function () {\n var reader = new CompressedStreamReader(this.compressedStream, true);\n var decompressedData;\n if (this.originalSize > 0)\n decompressedData = new Stream(new Uint8Array(this.originalSize));\n var arrBuffer = new Uint8Array(BufferSize);\n var iReadBytes;\n var past = new Uint8Array(0);\n while ((iReadBytes = reader.read(arrBuffer, 0, BufferSize)) > 0) {\n // past = new Uint8Array(decompressedData.length);\n // let currentBlock: Uint8Array = arrBuffer.subarray(0, iReadBytes);\n decompressedData.write(arrBuffer.subarray(0, iReadBytes), 0, iReadBytes);\n }\n this.unCompressedStream = decompressedData.toByteArray();\n // this.originalSize = decompressedData.Length;\n // m_bControlStream = true;\n // m_streamData = decompressedData;\n // decompressedData.SetLength( m_lOriginalSize );\n // decompressedData.Capacity = ( int )m_lOriginalSize;\n if (this.checkCrc) {\n //TODO: fix this\n //CheckCrc(decompressedData.ToArray());\n }\n //m_streamData.Position = 0;\n };\n /// \n /// Extracts local header from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readLocalHeader = function (stream) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n if (ZipArchive.ReadInt32(stream) != this.headerSignature)\n throw new DOMException(\"Can't find local header signature - wrong file format or file is corrupt.\");\n // TODO: it is good to verify data read from the central directory record,\n // but on the current moment we simply skip it.\n stream.position += 22;\n var iNameLength = ZipArchive.ReadInt16(stream);\n var iExtraLength = ZipArchive.ReadUInt16(stream);\n if (this.compressionMethod == 99) //SecurityConstants.AES\n {\n // stream.Position += iNameLength + 8;\n // m_archive.EncryptionAlgorithm = (EncryptionAlgorithm)stream.ReadByte();\n // m_actualCompression = new byte[2];\n // stream.Read(m_actualCompression, 0, 2);\n }\n else if (iExtraLength > 2) {\n stream.position += iNameLength;\n var headerVal = ZipArchive.ReadInt16(stream);\n if (headerVal == 0x0017) //PKZipEncryptionHeader\n throw new DOMException(\"UnSupported\");\n else\n stream.position += iExtraLength - 2;\n }\n else\n stream.position += iNameLength + iExtraLength;\n };\n /// \n /// Extracts compressed data from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readCompressedData = function (stream) {\n var dataStream;\n if (this.compressedSize > 0) {\n var iBytesLeft = this.compressedSize;\n dataStream = new Stream(new Uint8Array(iBytesLeft));\n var arrBuffer = new Uint8Array(BufferSize);\n while (iBytesLeft > 0) {\n var iBytesToRead = Math.min(iBytesLeft, BufferSize);\n if (stream.read(arrBuffer, 0, iBytesToRead) != iBytesToRead)\n throw new DOMException(\"End of file reached - wrong file format or file is corrupt.\");\n dataStream.write(arrBuffer.subarray(0, iBytesToRead), 0, iBytesToRead);\n iBytesLeft -= iBytesToRead;\n }\n // if(m_archive.Password != null)\n // {\n // byte[] dataBuffer = new byte[dataStream.Length];\n // dataBuffer = dataStream.ToArray();\n // dataStream=new MemoryStream( Decrypt(dataBuffer));\n // }\n this.compressedStream = new Uint8Array(dataStream.inputStream);\n // m_bControlStream = true;\n }\n else if (this.compressedSize < 0) //If compression size is negative, then read until the next header signature reached.\n {\n // MemoryStream dataStream = new MemoryStream();\n // int bt = 0;\n // bool proceed=true;\n // while (proceed)\n // {\n // if ((bt = stream.ReadByte()) == Constants.HeaderSignatureStartByteValue)\n // {\n // stream.Position -= 1;\n // int headerSignature = ZipArchive.ReadInt32(stream);\n // if (headerSignature==Constants.CentralHeaderSignature || headerSignature==Constants.CentralHeaderSignature)\n // {\n // proceed = false;\n // }\n // stream.Position -= 3;\n // }\n // if (proceed)\n // dataStream.WriteByte((byte)bt);\n // }\n // m_streamData = dataStream;\n // m_lCompressedSize = m_streamData.Length;\n // m_bControlStream = true;\n }\n else if (this.compressedSize == 0) {\n // m_streamData = new MemoryStream();\n }\n };\n return ZipArchiveItemHelper;\n}());\nexport { ZipArchiveItemHelper };\n/**\n * Class represent unique ZipArchive item\n * ```typescript\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * ```\n */\nvar ZipArchiveItem = /** @class */ (function () {\n /**\n * constructor for creating {ZipArchiveItem} instance\n * @param {Blob|ArrayBuffer} data file data\n * @param {itemName} itemName absolute file path\n */\n function ZipArchiveItem(data, itemName) {\n if (data === null || data === undefined) {\n throw new Error('ArgumentException: data cannot be null or undefined');\n }\n if (itemName === null || itemName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (itemName.length === 0) {\n throw new Error('string cannot be empty');\n }\n this.data = data;\n this.name = itemName;\n }\n Object.defineProperty(ZipArchiveItem.prototype, \"dataStream\", {\n get: function () {\n return this.decompressedStream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchiveItem.prototype, \"name\", {\n /**\n * Get the name of archive item\n * @returns string\n */\n get: function () {\n return this.fileName;\n },\n /**\n * Set the name of archive item\n * @param {string} value\n */\n set: function (value) {\n this.fileName = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchiveItem.prototype.destroy = function () {\n this.fileName = undefined;\n this.data = undefined;\n };\n return ZipArchiveItem;\n}());\nexport { ZipArchiveItem };\n/* eslint-enable */ \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 { 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 { 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 { 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","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.1';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' 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=MjEuMQ==\";\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","/**\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 { 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 (!this.element.classList.contains(\"e-dialog\") && !this.element.classList.contains(\"e-card\") && document.scrollingElement) {\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) ? 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 { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\n// import { IValueFormatter } from '../base/interface';\n/**\n * ValueFormatter class to globalize the value.\n * @private\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n // if (!isNullOrUndefined(cultureName)) {\n // this.intl.culture = cultureName;\n // }\n }\n ValueFormatter.prototype.getFormatFunction = function (format, isServerRendered) {\n if (format.type) {\n if (isServerRendered) {\n format.isServerRendered = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n // public getParserFunction(format: NumberFormatOptions | DateFormatOptions): Function {\n // if ((format).type) {\n // return this.intl.getDateParser(format);\n // } else {\n // return this.intl.getNumberParser(format);\n // }\n // }\n // public fromView(value: string, format: Function, type?: string): string | number | Date {\n // if (type === 'date' || type === 'datetime' || type === 'number') {\n // return format(value);\n // } else {\n // return value;\n // }\n // }\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n // public setCulture(cultureName: string): void {\n // if (!isNullOrUndefined(cultureName)) {\n // setCulture(cultureName);\n // }\n // }\n /* tslint:disable:no-any */\n ValueFormatter.prototype.displayText = function (value, format, isServerRendered) {\n return this.toView(value, this.getFormatFunction(format, isServerRendered));\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { ValueFormatter } from './value-formatter';\n/**\n * CsvHelper class\n * @private\n */\nvar CsvHelper = /** @class */ (function () {\n /* tslint:disable:no-any */\n function CsvHelper(json, separator) {\n this.csvStr = '';\n if (separator === null || separator === undefined) {\n this.separator = ',';\n }\n else {\n this.separator = separator;\n }\n this.formatter = new ValueFormatter();\n this.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n if (json.isServerRendered !== null && json.isServerRendered !== undefined) {\n this.isServerRendered = json.isServerRendered;\n }\n if (json.styles !== null && json.styles !== undefined) {\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined && json.styles[i].numberFormat !== undefined) {\n this.globalStyles.set(json.styles[i].name, json.styles[i].numberFormat);\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parseWorksheet(json.worksheets[0]);\n }\n //this.csvStr = 'a1,a2,a3\\nb1,b2,b3';\n }\n CsvHelper.prototype.parseWorksheet = function (json) {\n //Rows\n if (json.rows !== null && json.rows !== undefined) {\n this.parseRows(json.rows);\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRows = function (rows) {\n var count = 1;\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n //Row index\n if (row.index !== null && row.index !== undefined) {\n while (count < row.index) {\n this.csvStr += '\\r\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRow = function (row) {\n if (row.cells !== null && row.cells !== undefined) {\n var count = 1;\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n //cell index\n if (cell.index !== null && cell.index !== undefined) {\n while (count < cell.index) {\n this.csvStr += this.separator;\n count++;\n }\n this.parseCell(cell);\n }\n else {\n throw Error('Cell index is missing.');\n }\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseCell = function (cell) {\n var csv = this.csvStr;\n if (cell.value !== undefined) {\n if (cell.value instanceof Date) {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: cell.style.numberFormat }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: cell.style.numberFormat }, this.isServerRendered));\n }\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n }\n else {\n csv += cell.value;\n }\n }\n else if (typeof (cell.value) === 'boolean') {\n csv += cell.value ? 'TRUE' : 'FALSE';\n }\n else if (typeof (cell.value) === 'number') {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: cell.style.numberFormat }, this.isServerRendered));\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n else {\n csv += cell.value;\n }\n }\n else {\n csv += this.parseCellValue(cell.value);\n }\n }\n this.csvStr = csv;\n };\n CsvHelper.prototype.parseCellValue = function (value) {\n var val = '';\n var length = value.length;\n for (var start = 0; start < length; start++) {\n if (value[start] === '\\\"') {\n val += value[start].replace('\\\"', '\\\"\\\"');\n }\n else {\n val += value[start];\n }\n }\n value = val;\n if (value.indexOf(this.separator) !== -1 || value.indexOf('\\n') !== -1) {\n return value = '\\\"' + value + '\\\"';\n }\n else {\n return value;\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n */\n CsvHelper.prototype.save = function (fileName) {\n this.buffer = new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(this.buffer, fileName);\n }\n else {\n var dataUrl_1 = window.URL.createObjectURL(this.buffer);\n var dwlLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n dwlLink.download = fileName;\n dwlLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n dwlLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n });\n }\n };\n CsvHelper.prototype.saveAsBlob = function () {\n return new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n };\n return CsvHelper;\n}());\nexport { CsvHelper };\n","/**\n * BlobHelper class\n * @private\n */\nvar BlobHelper = /** @class */ (function () {\n function BlobHelper() {\n /* tslint:disable:no-any */\n this.parts = [];\n }\n /* tslint:disable:no-any */\n BlobHelper.prototype.append = function (part) {\n this.parts.push(part);\n this.blob = undefined; // Invalidate the blob\n };\n BlobHelper.prototype.getBlob = function () {\n return new Blob(this.parts, { type: 'text/plain' });\n };\n return BlobHelper;\n}());\nexport { BlobHelper };\n","/**\n * AutoFilters class\n * @private\n */\nvar AutoFilters = /** @class */ (function () {\n function AutoFilters() {\n }\n return AutoFilters;\n}());\nexport { AutoFilters };\n","import { Worksheets } from './worksheets';\nimport { Worksheet, FreezePane, MergeCell, MergeCells, HyperLink, Grouping } from './worksheet';\nimport { CellStyle, Font, Borders, CellXfs, Alignment, NumFmt, CellStyleXfs, CellStyles } from './cell-style';\nimport { Column } from './column';\nimport { Row, Rows } from './row';\nimport { Image } from './image';\nimport { Cell, Cells } from './cell';\nimport { ZipArchive, ZipArchiveItem } from '@syncfusion/ej2-compression';\nimport { CsvHelper } from './csv-helper';\nimport { Internationalization, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { BlobHelper } from './blob-helper';\nimport { AutoFilters } from './auto-filters';\n/**\n * Workbook class\n */\nvar Workbook = /** @class */ (function () {\n /* tslint:disable:no-any */\n function Workbook(json, saveType, culture, currencyString, separator) {\n this.sharedStringCount = 0;\n this.unitsProportions = [\n 96 / 75.0,\n 96 / 300.0,\n 96,\n 96 / 25.4,\n 96 / 2.54,\n 1,\n 96 / 72.0,\n 96 / 72.0 / 12700,\n ];\n /* tslint:disable:no-any */\n this.hyperlinkStyle = { fontColor: '#0000FF', underline: true };\n if (culture !== undefined) {\n this.culture = culture;\n }\n else {\n this.culture = 'en-US';\n }\n if (currencyString !== undefined) {\n this.currency = currencyString;\n }\n else {\n this.currency = 'USD';\n }\n this.intl = new Internationalization(this.culture);\n this.mSaveType = saveType;\n if (saveType === 'xlsx') {\n this.mArchive = new ZipArchive();\n this.sharedString = [];\n this.mFonts = [];\n this.mBorders = [];\n this.mStyles = [];\n this.printTitles = new Map();\n this.cellStyles = new Map();\n this.mNumFmt = new Map();\n this.mFills = new Map();\n this.mStyles.push(new CellStyle());\n this.mFonts.push(new Font());\n /* tslint:disable */\n this.cellStyles.set('Normal', new CellStyles());\n /* tslint:enable */\n this.mCellXfs = [];\n this.mCellStyleXfs = [];\n this.drawingCount = 0;\n this.imageCount = 0;\n if (json.styles !== null && json.styles !== undefined) {\n /* tslint:disable-next-line:no-any */\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined) {\n if (!this.cellStyles.has(json.styles[i].name)) {\n var cellStyle = new CellStyle();\n cellStyle.isGlobalStyle = true;\n this.parserCellStyle(json.styles[i], cellStyle, 'none');\n var cellStylesIn = new CellStyles();\n cellStylesIn.name = cellStyle.name;\n cellStylesIn.xfId = (cellStyle.index - 1);\n this.cellStyles.set(cellStylesIn.name, cellStylesIn);\n /* tslint:disable-next-line:no-any */\n var tFormat = {};\n if (json.styles[i].numberFormat !== undefined) {\n tFormat.format = json.styles[i].numberFormat;\n }\n if (json.styles[i].type !== undefined) {\n tFormat.type = json.styles[i].type;\n }\n else {\n tFormat.type = 'datetime';\n }\n if (tFormat.format !== undefined) {\n this.globalStyles.set(json.styles[i].name, tFormat);\n }\n }\n else {\n throw Error('Style name ' + json.styles[i].name + ' is already existed');\n }\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parserWorksheets(json.worksheets);\n }\n else {\n throw Error('Worksheet is expected.');\n }\n // Parses the BuiltInProperties data to DOM. \n if (json.builtInProperties !== null && json.builtInProperties !== undefined) {\n this.builtInProperties = new BuiltInProperties();\n this.parserBuiltInProperties(json.builtInProperties, this.builtInProperties);\n }\n }\n else {\n this.csvHelper = new CsvHelper(json, separator);\n }\n }\n /* tslint:disable:no-any */\n Workbook.prototype.parserBuiltInProperties = function (jsonBuiltInProperties, builtInProperties) {\n //Author\n if (jsonBuiltInProperties.author !== null && jsonBuiltInProperties.author !== undefined) {\n builtInProperties.author = jsonBuiltInProperties.author;\n }\n //Comments\n if (jsonBuiltInProperties.comments !== null && jsonBuiltInProperties.comments !== undefined) {\n builtInProperties.comments = jsonBuiltInProperties.comments;\n }\n //Category\n if (jsonBuiltInProperties.category !== null && jsonBuiltInProperties.category !== undefined) {\n builtInProperties.category = jsonBuiltInProperties.category;\n }\n //Company\n if (jsonBuiltInProperties.company !== null && jsonBuiltInProperties.company !== undefined) {\n builtInProperties.company = jsonBuiltInProperties.company;\n }\n //Manager\n if (jsonBuiltInProperties.manager !== null && jsonBuiltInProperties.manager !== undefined) {\n builtInProperties.manager = jsonBuiltInProperties.manager;\n }\n //Subject\n if (jsonBuiltInProperties.subject !== null && jsonBuiltInProperties.subject !== undefined) {\n builtInProperties.subject = jsonBuiltInProperties.subject;\n }\n //Title\n if (jsonBuiltInProperties.title !== null && jsonBuiltInProperties.title !== undefined) {\n builtInProperties.title = jsonBuiltInProperties.title;\n }\n //Creation date\n if (jsonBuiltInProperties.createdDate !== null && jsonBuiltInProperties.createdDate !== undefined) {\n builtInProperties.createdDate = jsonBuiltInProperties.createdDate;\n }\n //Modified date\n if (jsonBuiltInProperties.modifiedDate !== null && jsonBuiltInProperties.modifiedDate !== undefined) {\n builtInProperties.modifiedDate = jsonBuiltInProperties.modifiedDate;\n }\n //Tags\n if (jsonBuiltInProperties.tags !== null && jsonBuiltInProperties.tags !== undefined) {\n builtInProperties.tags = jsonBuiltInProperties.tags;\n }\n //Status\n if (jsonBuiltInProperties.status !== null && jsonBuiltInProperties.status !== undefined) {\n builtInProperties.status = jsonBuiltInProperties.status;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserWorksheets = function (json) {\n this.worksheets = new Worksheets();\n var length = json.length;\n for (var i = 0; i < length; i++) {\n var jsonSheet = json[i];\n var sheet = new Worksheet();\n this.mergeCells = new MergeCells();\n this.mergedCellsStyle = new Map();\n this.mHyperLinks = [];\n //Name\n if (jsonSheet.name !== null && jsonSheet.name !== undefined) {\n sheet.name = jsonSheet.name;\n }\n else {\n sheet.name = 'Sheet' + (i + 1).toString();\n }\n if (jsonSheet.enableRtl !== null && jsonSheet.enableRtl !== undefined) {\n sheet.enableRtl = jsonSheet.enableRtl;\n }\n sheet.index = (i + 1);\n //Columns\n if (jsonSheet.columns !== null && jsonSheet.columns !== undefined) {\n this.parserColumns(jsonSheet.columns, sheet);\n }\n //Rows\n if (jsonSheet.rows !== null && jsonSheet.rows !== undefined) {\n this.parserRows(jsonSheet.rows, sheet);\n }\n //showGridLines\n if (jsonSheet.showGridLines !== null && jsonSheet.showGridLines !== undefined) {\n sheet.showGridLines = jsonSheet.showGridLines;\n }\n //FreezePanes\n if (jsonSheet.freeze !== null && jsonSheet.freeze !== undefined) {\n this.parserFreezePanes(jsonSheet.freeze, sheet);\n }\n //Print Title\n if (jsonSheet.printTitle !== null && jsonSheet.printTitle !== undefined) {\n this.parserPrintTitle(jsonSheet.printTitle, sheet);\n }\n if (jsonSheet.pageSetup !== undefined) {\n if (jsonSheet.pageSetup.isSummaryRowBelow !== undefined) {\n sheet.isSummaryRowBelow = jsonSheet.pageSetup.isSummaryRowBelow;\n }\n }\n if (jsonSheet.images !== undefined) {\n this.parserImages(jsonSheet.images, sheet);\n }\n if (jsonSheet.autoFilters !== null && jsonSheet.autoFilters !== undefined) {\n this.parseFilters(jsonSheet.autoFilters, sheet);\n }\n sheet.index = (i + 1);\n sheet.mergeCells = this.mergeCells;\n sheet.hyperLinks = this.mHyperLinks;\n this.worksheets.push(sheet);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.mergeOptions = function (fromJson, toJson) {\n /* tslint:disable:no-any */\n var result = {};\n this.applyProperties(fromJson, result);\n this.applyProperties(toJson, result);\n return result;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.applyProperties = function (sourceJson, destJson) {\n var keys = Object.keys(sourceJson);\n for (var index = 0; index < keys.length; index++) {\n if (keys[index] !== 'name') {\n destJson[keys[index]] = sourceJson[keys[index]];\n }\n }\n };\n Workbook.prototype.getCellName = function (row, column) {\n return this.getColumnName(column) + row.toString();\n };\n Workbook.prototype.getColumnName = function (col) {\n col--;\n var strColumnName = '';\n do {\n var iCurrentDigit = col % 26;\n col = col / 26 - 1;\n strColumnName = String.fromCharCode(65 + iCurrentDigit) + strColumnName;\n } while (col >= 0);\n return strColumnName;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserPrintTitle = function (json, sheet) {\n var printTitleName = '';\n var titleRowName;\n if (json.fromRow !== null && json.fromRow !== undefined) {\n var fromRow = json.fromRow;\n var toRow = void 0;\n if (json.toRow !== null && json.toRow !== undefined) {\n toRow = json.toRow;\n }\n else {\n toRow = json.fromRow;\n }\n titleRowName = '$' + fromRow + ':$' + toRow;\n }\n var titleColName;\n if (json.fromColumn !== null && json.fromColumn !== undefined) {\n var fromColumn = json.fromColumn;\n var toColumn = void 0;\n if (json.toColumn !== null && json.toColumn !== undefined) {\n toColumn = json.toColumn;\n }\n else {\n toColumn = json.fromColumn;\n }\n titleColName = '$' + this.getColumnName(fromColumn) + ':$' + this.getColumnName(toColumn);\n }\n if (titleRowName !== undefined) {\n printTitleName += (sheet.name + '!' + titleRowName);\n }\n if (titleColName !== undefined && titleRowName !== undefined) {\n printTitleName += ',' + (sheet.name + '!' + titleColName);\n }\n else if (titleColName !== undefined) {\n printTitleName += (sheet.name + '!' + titleColName);\n }\n if (printTitleName !== '') {\n this.printTitles.set(sheet.index - 1, printTitleName);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserFreezePanes = function (json, sheet) {\n sheet.freezePanes = new FreezePane();\n if (json.row !== null && json.row !== undefined) {\n sheet.freezePanes.row = json.row;\n }\n else {\n sheet.freezePanes.row = 0;\n }\n if (json.column !== null && json.column !== undefined) {\n sheet.freezePanes.column = json.column;\n }\n else {\n sheet.freezePanes.column = 0;\n }\n sheet.freezePanes.leftCell = this.getCellName(sheet.freezePanes.row + 1, sheet.freezePanes.column + 1);\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserColumns = function (json, sheet) {\n var columnsLength = json.length;\n sheet.columns = [];\n for (var column = 0; column < columnsLength; column++) {\n var col = new Column();\n if (json[column].index !== null && json[column].index !== undefined) {\n col.index = json[column].index;\n }\n else {\n throw Error('Column index is missing.');\n }\n if (json[column].width !== null && json[column].width !== undefined) {\n col.width = json[column].width;\n }\n sheet.columns.push(col);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRows = function (json, sheet) {\n var rowsLength = json.length;\n sheet.rows = new Rows();\n var rowId = 0;\n for (var r = 0; r < rowsLength; r++) {\n var row = this.parserRow(json[r], rowId);\n rowId = row.index;\n sheet.rows.add(row);\n }\n this.insertMergedCellsStyle(sheet);\n };\n Workbook.prototype.insertMergedCellsStyle = function (sheet) {\n var _this = this;\n if (this.mergeCells.length > 0) {\n this.mergedCellsStyle.forEach(function (value, key) {\n var row = sheet.rows.filter(function (item) {\n return item.index === value.y;\n })[0];\n if (!isNullOrUndefined(row)) {\n var cell = row.cells.filter(function (item) {\n return item.index === value.x;\n })[0];\n if (!isNullOrUndefined(cell)) {\n cell.styleIndex = value.styleIndex;\n }\n else {\n var cells = row.cells.filter(function (item) {\n return item.index <= value.x;\n });\n var insertIndex = 0;\n if (cells.length > 0) {\n insertIndex = row.cells.indexOf(cells[cells.length - 1]) + 1;\n }\n row.cells.splice(insertIndex, 0, _this.createCell(value, key));\n }\n }\n else {\n var rows = sheet.rows.filter(function (item) {\n return item.index <= value.y;\n });\n var rowToInsert = new Row();\n rowToInsert.index = value.y;\n rowToInsert.cells = new Cells();\n rowToInsert.cells.add(_this.createCell(value, key));\n var insertIndex = 0;\n if (rows.length > 0) {\n insertIndex = sheet.rows.indexOf(rows[rows.length - 1]) + 1;\n }\n sheet.rows.splice(insertIndex, 0, rowToInsert);\n }\n });\n }\n };\n Workbook.prototype.createCell = function (value, key) {\n var cellToInsert = new Cell();\n cellToInsert.refName = key;\n cellToInsert.index = value.x;\n cellToInsert.cellStyle = new CellStyle();\n cellToInsert.styleIndex = value.styleIndex;\n return cellToInsert;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRow = function (json, rowIndex) {\n var row = new Row();\n //Row Height\n if (json.height !== null && json.height !== undefined) {\n row.height = json.height;\n }\n //Row index\n if (json.index !== null && json.index !== undefined) {\n row.index = json.index;\n }\n else {\n throw Error('Row index is missing.');\n }\n if (json.grouping !== null && json.grouping !== undefined) {\n this.parseGrouping(json.grouping, row);\n }\n this.parseCells(json.cells, row);\n return row;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseGrouping = function (json, row) {\n row.grouping = new Grouping();\n if (json.outlineLevel !== undefined) {\n row.grouping.outlineLevel = json.outlineLevel;\n }\n if (json.isCollapsed !== undefined) {\n row.grouping.isCollapsed = json.isCollapsed;\n }\n if (json.isHidden !== undefined) {\n row.grouping.isHidden = json.isHidden;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseCells = function (json, row) {\n row.cells = new Cells();\n var cellsLength = json !== undefined ? json.length : 0;\n var spanMin = 1;\n var spanMax = 1;\n var curCellIndex = 0;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n /* tslint:disable:no-any */\n var jsonCell = json[cellId];\n var cell = new Cell();\n //cell index\n if (jsonCell.index !== null && jsonCell.index !== undefined) {\n cell.index = jsonCell.index;\n }\n else {\n throw Error('Cell index is missing.');\n }\n if (cell.index < spanMin) {\n spanMin = cell.index;\n }\n else if (cell.index > spanMax) {\n spanMax = cell.index;\n }\n //Update the Cell name\n cell.refName = this.getCellName(row.index, cell.index);\n //Row span\n if (jsonCell.rowSpan !== null && jsonCell.rowSpan !== undefined) {\n cell.rowSpan = jsonCell.rowSpan - 1;\n }\n else {\n cell.rowSpan = 0;\n }\n //Column span\n if (jsonCell.colSpan !== null && jsonCell.colSpan !== undefined) {\n cell.colSpan = jsonCell.colSpan - 1;\n }\n else {\n cell.colSpan = 0;\n }\n //Hyperlink\n if (jsonCell.hyperlink !== null && jsonCell.hyperlink !== undefined) {\n var hyperLink = new HyperLink();\n if (jsonCell.hyperlink.target !== undefined) {\n hyperLink.target = jsonCell.hyperlink.target;\n if (jsonCell.hyperlink.displayText !== undefined) {\n cell.value = jsonCell.hyperlink.displayText;\n }\n else {\n cell.value = jsonCell.hyperlink.target;\n }\n cell.type = this.getCellValueType(cell.value);\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n cell.cellStyle = new CellStyle();\n /* tslint:disable-next-line:max-line-length */\n this.parserCellStyle((jsonCell.style !== undefined ? this.mergeOptions(jsonCell.style, this.hyperlinkStyle) : this.hyperlinkStyle), cell.cellStyle, 'string');\n cell.styleIndex = cell.cellStyle.index;\n }\n }\n // formulas\n if (jsonCell.formula !== null && jsonCell.formula !== undefined) {\n cell.formula = jsonCell.formula;\n cell.type = 'formula';\n }\n //Cell value\n if (jsonCell.value !== null && jsonCell.value !== undefined) {\n if (cell.formula !== undefined) {\n cell.value = 0;\n }\n else {\n cell.value = jsonCell.value;\n cell.type = this.getCellValueType(cell.value);\n }\n }\n if (jsonCell.style !== null && jsonCell.style !== undefined && cell.styleIndex === undefined) {\n cell.cellStyle = new CellStyle();\n if (cell.value instanceof Date) {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type, 14);\n }\n else {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type);\n }\n cell.styleIndex = cell.cellStyle.index;\n }\n else if (cell.value instanceof Date) {\n cell.cellStyle = new CellStyle();\n this.parserCellStyle({}, cell.cellStyle, cell.type, 14);\n cell.styleIndex = cell.cellStyle.index;\n }\n this.parseCellType(cell);\n this.mergeCells = this.processMergeCells(cell, row.index, this.mergeCells);\n row.cells.add(cell);\n curCellIndex = (cell.index + 1);\n }\n row.spans = (spanMin) + ':' + (spanMax);\n };\n Workbook.prototype.GetColors = function () {\n var colors;\n colors = new Map();\n /* tslint:disable */\n colors.set('WHITE', 'FFFFFFFF');\n /* tslint:disable */\n colors.set('SILVER', 'FFC0C0C0');\n /* tslint:disable */\n colors.set('GRAY', 'FF808080');\n /* tslint:disable */\n colors.set('BLACK', 'FF000000');\n /* tslint:disable */\n colors.set('RED', 'FFFF0000');\n /* tslint:disable */\n colors.set('MAROON', 'FF800000');\n /* tslint:disable */\n colors.set('YELLOW', 'FFFFFF00');\n /* tslint:disable */\n colors.set('OLIVE', 'FF808000');\n /* tslint:disable */\n colors.set('LIME', 'FF00FF00');\n /* tslint:disable */\n colors.set('GREEN', 'FF008000');\n /* tslint:disable */\n colors.set('AQUA', 'FF00FFFF');\n /* tslint:disable */\n colors.set('TEAL', 'FF008080');\n /* tslint:disable */\n colors.set('BLUE', 'FF0000FF');\n /* tslint:disable */\n colors.set('NAVY', 'FF000080');\n /* tslint:disable */\n colors.set('FUCHSIA', 'FFFF00FF');\n /* tslint:disable */\n colors.set('PURPLE', 'FF800080');\n return colors;\n };\n Workbook.prototype.processColor = function (colorVal) {\n if (colorVal.indexOf('#') === 0) {\n return colorVal.replace('#', 'FF');\n }\n colorVal = colorVal.toUpperCase();\n this.rgbColors = this.GetColors();\n if (this.rgbColors.has(colorVal)) {\n colorVal = this.rgbColors.get(colorVal);\n }\n else {\n colorVal = 'FF000000';\n }\n return colorVal;\n };\n Workbook.prototype.processCellValue = function (value, cell) {\n var cellValue = value;\n if (value.indexOf(\"\") !== -1 ||\n value.indexOf(\"\") !== -1 || value.indexOf(\"\") !== -1) {\n var processedVal = '';\n var startindex = value.indexOf('<', 0);\n var endIndex = value.indexOf('>', startindex + 1);\n if (startindex >= 0 && endIndex >= 0) {\n if (startindex !== 0) {\n processedVal += '' + this.processString(value.substring(0, startindex)) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n var subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n var text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n var subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (var _i = 0, subSplit_1 = subSplit; _i < subSplit_1.length; _i++) {\n var element = subSplit_1[_i];\n var start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n var hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n var style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + this.processString(text) + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n };\n Workbook.prototype.applyGlobalStyle = function (json, cellStyle) {\n var index = 0;\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter(function (a) { return (a.name === json.name); })[0].index;\n cellStyle.name = json.name;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserCellStyle = function (json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //strikeThrough\n if (json.strikeThrough !== null && json.strikeThrough !== undefined) {\n cellStyle.strikeThrough = json.strikeThrough;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n };\n Workbook.prototype.switchNumberFormat = function (numberFormat, type) {\n var format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n var numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXfs = _a[_i];\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (var _b = 0, _c = this.mCellXfs; _b < _c.length; _b++) {\n var cellXfs = _c[_b];\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n };\n Workbook.prototype.getNumberFormat = function (numberFormat, type) {\n var returnFormat;\n switch (type) {\n case 'number':\n try {\n returnFormat = this.intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n break;\n case 'datetime':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'date':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'time':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n default:\n returnFormat = numberFormat;\n break;\n }\n return returnFormat;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserBorder = function (json, border) {\n if (json.color !== null && json.color !== undefined) {\n border.color = json.color;\n }\n else {\n border.color = '#000000';\n }\n if (json.lineStyle !== null && json.lineStyle !== undefined) {\n border.lineStyle = json.lineStyle;\n }\n else {\n border.lineStyle = 'thin';\n }\n };\n Workbook.prototype.processCellStyle = function (style) {\n if (style.isGlobalStyle) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n var compareResult = this.compareStyle(style);\n if (!compareResult.result) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n //Return the index of the already existing style.\n return compareResult.index;\n }\n }\n };\n Workbook.prototype.processNumFormatId = function (style) {\n if (style.numberFormat !== 'GENERAL' && !this.mNumFmt.has(style.numberFormat)) {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n }\n };\n Workbook.prototype.isNewFont = function (toCompareStyle) {\n var result = false;\n var index = 0;\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n index++;\n var fontColor = undefined;\n if (toCompareStyle.fontColor !== undefined) {\n fontColor = ('FF' + toCompareStyle.fontColor.replace('#', ''));\n }\n result = font.color === fontColor &&\n font.b === toCompareStyle.bold &&\n font.i === toCompareStyle.italic &&\n font.u === toCompareStyle.underline &&\n font.strike === toCompareStyle.strikeThrough &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index: index, result: result };\n };\n Workbook.prototype.isNewBorder = function (toCompareStyle) {\n var bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n };\n Workbook.prototype.isAllBorder = function (toCompareBorder) {\n var allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n };\n Workbook.prototype.compareStyle = function (toCompareStyle) {\n var result = true;\n var index = 0;\n var globalStyleIndex = 0;\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var baseStyle = _a[_i];\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.strikeThrough === toCompareStyle.strikeThrough &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index: index, result: result };\n };\n Workbook.prototype.contains = function (array, item) {\n var index = array.indexOf(item);\n return index > -1 && index < array.length;\n };\n Workbook.prototype.getCellValueType = function (value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n };\n Workbook.prototype.parseCellType = function (cell) {\n var type = cell.type;\n var saveType;\n var value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n var value_1 = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value_1.format, value_1.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n var sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n };\n Workbook.prototype.parserImages = function (json, sheet) {\n var imagesLength = json.length;\n sheet.images = [];\n var imageId = 0;\n for (var p = 0; p < imagesLength; p++) {\n var image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n };\n Workbook.prototype.parseFilters = function (json, sheet) {\n sheet.autoFilters = new AutoFilters();\n if (json.row !== null && json.row !== undefined)\n sheet.autoFilters.row = json.row;\n else\n throw new Error('Argument Null Exception: row null or empty');\n if (json.lastRow !== null && json.lastRow !== undefined)\n sheet.autoFilters.lastRow = json.lastRow;\n else\n throw new Error('Argument Null Exception: lastRow cannot be null or empty');\n if (json.column !== null && json.column !== undefined)\n sheet.autoFilters.column = json.column;\n else\n throw new Error('Argument Null Exception: column cannot be null or empty');\n if (json.lastColumn !== null && json.row !== undefined)\n sheet.autoFilters.lastColumn = json.lastColumn;\n else\n throw new Error('Argument Null Exception: lastColumn cannot be null or empty');\n };\n Workbook.prototype.parserImage = function (json) {\n var image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n };\n Workbook.prototype.saveAsBlob = function (blobSaveType) {\n var _this = this;\n switch (blobSaveType) {\n case 'text/csv':\n return new Promise(function (resolve, reject) {\n var obj = {};\n obj.blobData = _this.csvHelper.saveAsBlob();\n resolve(obj);\n });\n default:\n return new Promise(function (resolve, reject) {\n _this.saveInternal();\n _this.mArchive.saveAsBlob().then(function (blob) {\n var obj = {};\n obj.blobData = new Blob([blob], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n resolve(obj);\n });\n });\n }\n };\n Workbook.prototype.save = function (fileName, proxyUrl) {\n var _this = this;\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('Argument Null Exception: fileName cannot be null or empty');\n }\n var xlsxMatch = fileName.match('.xlsx$');\n var csvMatch = fileName.match('.csv$');\n if (xlsxMatch !== null && xlsxMatch[0] === ('.' + this.mSaveType)) {\n this.saveInternal();\n this.mArchive.save(fileName).then(function () {\n _this.mArchive.destroy();\n });\n }\n else if (csvMatch !== null && csvMatch[0] === ('.' + this.mSaveType)) {\n this.csvHelper.save(fileName);\n }\n else {\n throw Error('Save type and file extension is different.');\n }\n };\n Workbook.prototype.saveInternal = function () {\n this.saveWorkbook();\n this.saveWorksheets();\n this.saveSharedString();\n this.saveStyles();\n this.saveApp(this.builtInProperties);\n this.saveCore(this.builtInProperties);\n this.saveContentType();\n this.saveTopLevelRelation();\n this.saveWorkbookRelation();\n };\n Workbook.prototype.saveWorkbook = function () {\n /* tslint:disable-next-line:max-line-length */\n var workbookTemp = '';\n var sheets = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n var sheetName = this.worksheets[i].name;\n sheetName = sheetName.replace(\"&\", \"&\");\n sheetName = sheetName.replace(\"<\", \"<\");\n sheetName = sheetName.replace(\">\", \">\");\n sheetName = sheetName.replace(\"\\\"\", \""\");\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n var printTitle_1 = '';\n this.printTitles.forEach(function (value, key) {\n printTitle_1 += '' + value + '';\n });\n printTitle_1 += '';\n workbookTemp += printTitle_1;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n };\n Workbook.prototype.saveWorksheets = function () {\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n };\n Workbook.prototype.saveWorksheet = function (sheet, index) {\n var sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n var colString = '';\n for (var _i = 0, _a = sheet.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (var _b = 0, _c = sheet.rows; _b < _c.length; _b++) {\n var row = _c[_b];\n var rowString = '');\n for (var _d = 0, _e = row.cells; _d < _e.length; _d++) {\n var cell = _e[_d];\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n /* tslint:disable-next-line:max-line-length */\n if (sheet.autoFilters !== null && sheet.autoFilters !== undefined)\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (var _f = 0, _g = sheet.mergeCells; _f < _g.length; _f++) {\n var mCell = _g[_f];\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (var _h = 0, _j = sheet.hyperLinks; _h < _j.length; _h++) {\n var hLink = _j[_h];\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n };\n Workbook.prototype.saveDrawings = function (sheet, index) {\n var drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetDrawingString = '';\n if (sheet.images !== undefined) {\n var imgId = 0;\n for (var _i = 0, _a = sheet.images; _i < _a.length; _i++) {\n var pic = _a[_i];\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n pic.lastRow -= 1;\n pic.lastColumn -= 1;\n }\n else if (pic.lastRow !== undefined && pic.lastColumn !== undefined) {\n pic.lastRowOffset = 0;\n pic.lastColOffset = 0;\n }\n imgId++;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.column - 1;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.row - 1;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.lastColumn;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += pic.lastColOffset;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.lastRow;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += pic.lastRowOffset;\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += ' ';\n sheetDrawingString += ' ';\n sheetDrawingString += '';\n /* tslint:disable-next-line:max-line-length */\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '= -3600) {\n sheetDrawingString += ' rot=\"' + (pic.rotation * 60000) + '\"';\n }\n if (pic.verticalFlip != undefined && pic.verticalFlip != false) {\n sheetDrawingString += ' flipV=\"1\"';\n }\n if (pic.horizontalFlip != undefined && pic.horizontalFlip != false) {\n sheetDrawingString += ' flipH=\"1\"';\n }\n sheetDrawingString += '/>';\n sheetDrawingString += '';\n sheetDrawingString += '';\n var imageFile = new BlobHelper();\n var imageData = this.convertBase64toImage(pic.image);\n this.imageCount += 1;\n this.addToArchive(imageData, 'xl/media/image' + this.imageCount + '.png');\n }\n drawings.append(sheetDrawingString);\n drawings.append('');\n this.saveDrawingRelations(sheet);\n this.addToArchive(drawings.getBlob(), 'xl/drawings/drawing' + this.drawingCount + '.xml');\n }\n };\n Workbook.prototype.updatelastRowOffset = function (sheet, picture) {\n var iCurHeight = picture.height;\n var iCurRow = picture.row;\n var iCurOffset = 0;\n while (iCurHeight >= 0) {\n var iRowHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n iRowHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n iRowHeight = this.convertToPixels(15);\n var iSpaceInCell = iRowHeight - (iCurOffset * iRowHeight / 256);\n if (iSpaceInCell > iCurHeight) {\n picture.lastRow = iCurRow;\n picture.lastRowOffset = iCurOffset + (iCurHeight * 256 / iRowHeight);\n var rowHiddenHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n rowHiddenHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n rowHiddenHeight = this.convertToPixels(15);\n picture.lastRowOffset = (rowHiddenHeight * picture.lastRowOffset) / 256;\n picture.lastRowOffset = Math.round(picture.lastRowOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurHeight -= iSpaceInCell;\n iCurRow++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.updatelastColumnOffSet = function (sheet, picture) {\n var iCurWidth = picture.width;\n var iCurCol = picture.column;\n var iCurOffset = 0;\n while (iCurWidth >= 0) {\n var iColWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n iColWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n iColWidth = this.ColumnWidthToPixels(8.43);\n var iSpaceInCell = iColWidth - (iCurOffset * iColWidth / 1024);\n if (iSpaceInCell > iCurWidth) {\n picture.lastColumn = iCurCol;\n picture.lastColOffset = iCurOffset + (iCurWidth * 1024 / iColWidth);\n var colHiddenWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n colHiddenWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n colHiddenWidth = this.ColumnWidthToPixels(8.43);\n picture.lastColOffset = (colHiddenWidth * picture.lastColOffset) / 1024;\n picture.lastColOffset = Math.round(picture.lastColOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurWidth -= iSpaceInCell;\n iCurCol++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.convertToPixels = function (value) {\n return value * this.unitsProportions[6];\n };\n Workbook.prototype.convertBase64toImage = function (img) {\n var byteStr = window.atob(img);\n var buffer = new ArrayBuffer(byteStr.length);\n var data = new Uint8Array(buffer);\n for (var i = 0; i < byteStr.length; i++) {\n data[i] = byteStr.charCodeAt(i);\n }\n var blob = new Blob([data], { type: 'image/png' });\n return blob;\n };\n Workbook.prototype.saveDrawingRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var drawingRelation = '';\n var length = sheet.images.length;\n var id = this.imageCount - sheet.images.length;\n for (var i = 1; i <= length; i++) {\n id++;\n /* tslint:disable-next-line:max-line-length */\n drawingRelation += '';\n }\n this.addToArchive((drawingRelation + ''), 'xl/drawings/_rels/drawing' + this.drawingCount + '.xml.rels');\n };\n Workbook.prototype.pixelsToColumnWidth = function (pixels) {\n var dDigitWidth = 7;\n var val = (pixels > dDigitWidth + 5) ?\n this.trunc((pixels - 5) / dDigitWidth * 100 + 0.5) / 100 :\n pixels / (dDigitWidth + 5);\n return (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n };\n Workbook.prototype.ColumnWidthToPixels = function (val) {\n var dDigitWidth = 7;\n var fileWidth = (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n return this.trunc(((256 * fileWidth + this.trunc(128 / dDigitWidth)) / 256) * dDigitWidth);\n };\n Workbook.prototype.trunc = function (x) {\n var n = x - x % 1;\n return n === 0 && (x < 0 || (x === 0 && (1 / x !== 1 / 0))) ? -0 : n;\n };\n Workbook.prototype.pixelsToRowHeight = function (pixels) {\n return (pixels * this.unitsProportions[5] / this.unitsProportions[6]);\n };\n Workbook.prototype.saveSheetRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var relStr = '';\n for (var _i = 0, _a = sheet.hyperLinks; _i < _a.length; _i++) {\n var hLink = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n if (sheet.images != undefined && sheet.images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n relStr += '';\n return relStr;\n };\n Workbook.prototype.saveSheetView = function (sheet) {\n var paneString = ' 0) {\n /* tslint:disable-next-line:max-line-length */\n var sstStart = '';\n var si = '';\n for (var i = 0; i < length; i++) {\n if (this.sharedString[i].indexOf('') !== 0) {\n si += '';\n si += this.processString(this.sharedString[i]);\n si += '';\n }\n else {\n si += '';\n si += this.sharedString[i];\n si += '';\n }\n }\n si += '';\n this.addToArchive(sstStart + si, 'xl/sharedStrings.xml');\n }\n };\n Workbook.prototype.processString = function (value) {\n if (typeof value == \"string\") {\n if (value.indexOf('&') !== -1) {\n value = value.replace(/&/g, '&');\n }\n if (value.indexOf('<') !== -1) {\n value = value.replace(/') !== -1) {\n value = value.replace(/>/g, '>');\n }\n if (value.indexOf('\\v') !== -1) {\n value = value.replace(/\\v/g, '_x000B_');\n }\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n if (value[i].indexOf('&') !== -1) {\n value[i] = value[i].replace(/&/g, '&');\n }\n if (value[i].indexOf('<') !== -1) {\n value[i] = value[i].replace(/') !== -1) {\n value[i] = value[i].replace(/>/g, '>');\n }\n if (value[i].indexOf('\\v') !== -1) {\n value[i] = value[i].replace(/\\v/g, '_x000B_');\n }\n }\n }\n return value;\n };\n Workbook.prototype.saveStyles = function () {\n this.updateCellXfsStyleXfs();\n /* tslint:disable-next-line:max-line-length */\n var styleTemp = '';\n styleTemp += this.saveNumberFormats();\n styleTemp += this.saveFonts();\n styleTemp += this.saveFills();\n styleTemp += this.saveBorders();\n styleTemp += this.saveCellStyleXfs();\n styleTemp += this.saveCellXfs();\n styleTemp += this.saveCellStyles();\n this.addToArchive(styleTemp + '', 'xl/styles.xml');\n };\n Workbook.prototype.updateCellXfsStyleXfs = function () {\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var style = _a[_i];\n var cellXfs = undefined;\n if (style.isGlobalStyle) {\n cellXfs = new CellStyleXfs();\n cellXfs.xfId = (style.index - 1);\n }\n else {\n cellXfs = new CellXfs();\n cellXfs.xfId = 0;\n }\n //Add font\n var compareFontResult = this.isNewFont(style);\n if (!compareFontResult.result) {\n var font = new Font();\n font.b = style.bold;\n font.i = style.italic;\n font.name = style.fontName;\n font.sz = style.fontSize;\n font.u = style.underline;\n font.strike = style.strikeThrough;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n var backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n var fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n var fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n var numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n };\n Workbook.prototype.saveNumberFormats = function () {\n if (this.mNumFmt.size >= 1) {\n var numFmtStyle_1 = '';\n this.mNumFmt.forEach(function (value, key) {\n numFmtStyle_1 += '';\n });\n return (numFmtStyle_1 += '');\n }\n else {\n return '';\n }\n };\n Workbook.prototype.saveFonts = function () {\n /* tslint:disable-next-line:max-line-length */\n var fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n if (font.strike) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n };\n Workbook.prototype.saveFills = function () {\n /* tslint:disable-next-line:max-line-length */\n var fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach(function (value, key) {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n };\n Workbook.prototype.saveBorders = function () {\n /* tslint:disable-next-line:max-line-length */\n var bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (var _i = 0, _a = this.mBorders; _i < _a.length; _i++) {\n var borders = _a[_i];\n if (this.isAllBorder(borders)) {\n var color = borders.all.color.replace('#', '');\n var lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n };\n Workbook.prototype.saveCellStyles = function () {\n var _this = this;\n var cellStyleString = '';\n this.cellStyles.forEach(function (value, key) {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveCellXfs = function () {\n /* tslint:disable-next-line:max-line-length */\n var cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellXfs; _i < _a.length; _i++) {\n var cellXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveAlignment = function (cellXf) {\n var alignString = '';\n return alignString;\n };\n Workbook.prototype.saveApp = function (builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n var appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n };\n Workbook.prototype.saveCore = function (builtInProperties) {\n var createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n var coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n };\n Workbook.prototype.saveTopLevelRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n };\n Workbook.prototype.saveWorkbookRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var wbRelation = '';\n var length = this.worksheets.length;\n var count = 0;\n for (var i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n };\n Workbook.prototype.saveContentType = function () {\n /* tslint:disable-next-line:max-line-length */\n var contentTypeString = '';\n var sheetsOverride = '';\n var length = this.worksheets.length;\n var drawingIndex = 0;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n if (this.worksheets[i].images != undefined && this.worksheets[i].images.length > 0) {\n drawingIndex++;\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n }\n }\n if (this.imageCount > 0)\n sheetsOverride += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n contentTypeString += '';\n }\n this.addToArchive((contentTypeString + sheetsOverride + ''), '[Content_Types].xml');\n };\n Workbook.prototype.addToArchive = function (xmlString, itemName) {\n if (typeof (xmlString) === 'string') {\n var blob = new Blob([xmlString], { type: 'text/plain' });\n var archiveItem = new ZipArchiveItem(blob, itemName);\n this.mArchive.addItem(archiveItem);\n }\n else {\n var archiveItem = new ZipArchiveItem(xmlString, itemName);\n this.mArchive.addItem(archiveItem);\n }\n };\n Workbook.prototype.processMergeCells = function (cell, rowIndex, mergeCells) {\n if (cell.rowSpan !== 0 || cell.colSpan !== 0) {\n var mCell = new MergeCell();\n mCell.x = cell.index;\n mCell.width = cell.colSpan;\n mCell.y = rowIndex;\n mCell.height = cell.rowSpan;\n var startCell = this.getCellName(mCell.y, mCell.x);\n var endCell = this.getCellName(rowIndex + mCell.height, cell.index + mCell.width);\n mCell.ref = startCell + ':' + endCell;\n var mergedCell = mergeCells.add(mCell);\n var start = { x: mCell.x, y: mCell.y };\n var end = {\n x: (cell.index + mCell.width), y: (rowIndex + mCell.height)\n };\n this.updatedMergedCellStyles(start, end, cell);\n }\n return mergeCells;\n };\n Workbook.prototype.updatedMergedCellStyles = function (sCell, eCell, cell) {\n for (var x = sCell.x; x <= eCell.x; x++) {\n for (var y = sCell.y; y <= eCell.y; y++) {\n this.mergedCellsStyle.set(this.getCellName(y, x), { x: x, y: y, styleIndex: cell.styleIndex });\n }\n }\n };\n /**\n * Returns the tick count corresponding to the given year, month, and day.\n * @param year number value of year\n * @param month number value of month\n * @param day number value of day\n */\n Workbook.prototype.dateToTicks = function (year, month, day) {\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysToMonth365 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n var daysToMonth366 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\n if (year >= 1 && year <= 9999 && month >= 1 && month <= 12) {\n var days = this.isLeapYear(year) ? daysToMonth366 : daysToMonth365;\n var y = year - 1;\n var n = y * 365 + ((y / 4) | 0) - ((y / 100) | 0) + ((y / 400) | 0) + days[month - 1] + day - 1;\n return n * ticksPerDay;\n }\n throw new Error('Not a valid date');\n };\n /**\n * Return the tick count corresponding to the given hour, minute, second.\n * @param hour number value of hour\n * @param minute number value if minute\n * @param second number value of second\n */\n Workbook.prototype.timeToTicks = function (hour, minute, second) {\n if (hour >= 0 && hour < 24 && minute >= 0 && minute < 60 && second >= 0 && second < 60) {\n var totalSeconds = hour * 3600 + minute * 60 + second;\n return totalSeconds * 10000 * 1000;\n }\n throw new Error('Not valid time');\n };\n /**\n * Checks if given year is a leap year.\n * @param year Year value.\n */\n Workbook.prototype.isLeapYear = function (year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n };\n /**\n * Converts `DateTime` to the equivalent OLE Automation date.\n */\n Workbook.prototype.toOADate = function (date) {\n var ticks = 0;\n /* tslint:disable-next-line:max-line-length */\n ticks = this.dateToTicks(date.getFullYear(), (date.getMonth() + 1), date.getDate()) + this.timeToTicks(date.getHours(), date.getMinutes(), date.getSeconds());\n if (ticks === 0) {\n return 0.0;\n }\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysTo1899 = (((365 * 4 + 1) * 25 - 1) * 4 + 1) * 4 + ((365 * 4 + 1) * 25 - 1) * 3 - 367;\n var doubleDateOffset = daysTo1899 * ticksPerDay;\n var oaDateMinAsTicks = (((365 * 4 + 1) * 25 - 1) - 365) * ticksPerDay;\n if (ticks < oaDateMinAsTicks) {\n throw new Error('Arg_OleAutDateInvalid');\n }\n var millisPerDay = 1000 * 60 * 60 * 24;\n return ((ticks - doubleDateOffset) / 10000) / millisPerDay;\n };\n return Workbook;\n}());\nexport { Workbook };\n/**\n * BuiltInProperties Class\n * @private\n */\nvar BuiltInProperties = /** @class */ (function () {\n function BuiltInProperties() {\n }\n return BuiltInProperties;\n}());\nexport { BuiltInProperties };\n","import * as events from '../base/constant';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { isNullOrUndefined, getEnumValue, compile, getValue, detach, extend } from '@syncfusion/ej2-base';\nimport { Data } from '../actions/data';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { CellType } from '../base/enum';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getPrintGridModel, getUid, isExportColumns, updateColumnTypeForExportColumns, prepareColumns, measureColumnDepth } from '../base/util';\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for the Grid Excel Export module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function ExcelExport(parent, locator) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isChild = false;\n this.isElementIdChanged = false;\n this.gridPool = {};\n this.sheet = {};\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.locator = locator;\n this.l10n = this.locator.getService('localization');\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n ExcelExport.prototype.init = function (gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n };\n /**\n * Export Grid to Excel file.\n *\n * @param {IGrid} grid - Defines the grid.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {Workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {boolean} isCsv - true if export to CSV.\n * @param {boolean} isBlob - true if isBlob is enabled.\n * @returns {Promise} - Returns the map for export.\n */\n // eslint-disable-next-line\n ExcelExport.prototype.Map = function (grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n var gObj = grid;\n var cancel = 'cancel';\n var isBlb = 'isBlob';\n var Child = 'isChild';\n var csv = 'isCsv';\n var workbk = 'workbook';\n var isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if (grid.childGrid && !(!isNullOrUndefined(exportProperties) && exportProperties.hierarchyExportMode === 'None')) {\n grid.expandedRows = getPrintGridModel(grid).expandedRows;\n }\n var args = {\n requestType: 'beforeExcelExport', gridObject: gObj, cancel: false,\n isMultipleExport: isMultipleExport, workbook: workbook, isCsv: isCsv, isBlob: isBlob, isChild: this.isChild\n };\n gObj.trigger(events.beforeExcelExport, args);\n if (args[\"\" + cancel]) {\n return new Promise(function (resolve) {\n return resolve();\n });\n }\n this.parent.log('exporting_begin', this.getModuleName());\n this.data = new Data(gObj);\n this.isExporting = true;\n this.isBlob = args[\"\" + isBlb];\n this.isChild = args[\"\" + Child];\n if (args[\"\" + csv]) {\n this.isCsvExport = args[\"\" + csv];\n }\n else {\n this.isCsvExport = false;\n }\n if (isExportColumns(exportProperties)) {\n updateColumnTypeForExportColumns(exportProperties, gObj);\n }\n return this.processRecords(gObj, exportProperties, args[\"\" + isMultiEx], args[\"\" + workbk]);\n };\n ExcelExport.prototype.exportingSuccess = function (resolve) {\n this.isExporting = false;\n this.parent.trigger(events.excelExportComplete, this.isBlob ? { promise: this.blobPromise } : {});\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource)) {\n exportProperties.dataSource = exportProperties.dataSource instanceof DataManager ?\n exportProperties.dataSource : new DataManager(exportProperties.dataSource);\n var query_1 = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query_1.isCountRequired) || gObj.aggregates) {\n query_1.isCountRequired = true;\n }\n return new Promise(function (resolve) {\n var dataManager = exportProperties.dataSource.executeQuery(query_1);\n dataManager.then(function (r) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(function () {\n _this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, _this.parent.getCurrentViewRecords());\n _this.exportingSuccess(resolve);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise_1.push(this.helper.getColumnData(gObj));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(function () {\n _this.exportingSuccess(resolve);\n });\n }).catch(function (e) {\n reject(_this.book);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n }\n };\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, r) {\n var _this = this;\n this.groupedColLength = gObj.groupSettings.columns.length;\n var blankRows = 5;\n var separator;\n var rows = [];\n var colDepth = measureColumnDepth(gObj.columns);\n var isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.sheet.images = [];\n }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\n this.sheet.images = [];\n this.styles = workbook.styles;\n }\n else {\n this.workSheet = [];\n this.rows = workbook.worksheets[0].rows;\n this.columns = workbook.worksheets[0].columns;\n this.styles = workbook.styles;\n this.sheet.images = workbook.worksheets[0].images;\n this.rowLength = (this.rows[this.rows.length - 1].index + blankRows);\n this.rowLength++;\n }\n if (isExportPropertiesPresent) {\n if (!isNullOrUndefined(isMultipleExport)) {\n if (!isNullOrUndefined(exportProperties.header) && (isMultipleExport || this.expType === 'NewSheet')) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n if (this.expType === 'AppendToSheet') {\n if (!isMultipleExport) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n else {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n else {\n if (!isNullOrUndefined(exportProperties.header)) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n this.includeHiddenColumn = (isExportPropertiesPresent ? exportProperties.includeHiddenColumn : false);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n gObj.childGridLevel = 0;\n rows = _this.processGridExport(gObj, exportProperties, r);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n var organisedRows = [];\n _this.organiseRows(rows, rows[0].index, organisedRows);\n _this.rows = _this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(_this.footer)) {\n if ((_this.expType === 'AppendToSheet' && !isMultipleExport) || (_this.expType === 'NewSheet')) {\n _this.processExcelFooter(_this.footer);\n }\n }\n if (_this.columns.length > 0) {\n _this.sheet.columns = _this.columns;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.sheet.rows = _this.rows;\n _this.sheet.enableRtl = _this.parent.enableRtl;\n if (_this.parent.allowFiltering && gObj.getVisibleColumns().length && isExportPropertiesPresent &&\n exportProperties.enableFilter) {\n var headerRowLen = exportProperties.header ? exportProperties.header.headerRows ||\n exportProperties.header.rows.length : 0;\n var autoFilters = {\n row: colDepth + headerRowLen, column: _this.groupedColLength ? _this.groupedColLength + 1 :\n _this.sheet.columns[0].index, lastRow: _this.sheet.rows.length, lastColumn: _this.sheet.columns.length\n };\n _this.sheet.autoFilters = autoFilters;\n }\n _this.workSheet.push(_this.sheet);\n _this.book.worksheets = _this.workSheet;\n _this.book.styles = _this.styles;\n gObj.notify('finalPageSetup', _this.book);\n if (!isMultipleExport) {\n if (_this.isCsvExport) {\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n var book = new Workbook(_this.book, 'csv', gObj.locale, gObj.currencyCode, separator);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.csv');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('text/csv');\n }\n }\n else {\n var book = new Workbook(_this.book, 'xlsx', gObj.locale, gObj.currencyCode);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.xlsx');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n }\n }\n if (_this.isElementIdChanged) {\n gObj.element.id = '';\n }\n delete gObj.expandedRows;\n }\n return workbook;\n });\n };\n ExcelExport.prototype.organiseRows = function (rows, initialIndex, organisedRows) {\n if (!rows.length) {\n return initialIndex;\n }\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n var childRows = row.childRows;\n if (childRows) {\n row.index = initialIndex++;\n delete row.childRows;\n organisedRows.push(row);\n initialIndex = this.organiseRows(childRows, initialIndex, organisedRows);\n }\n else {\n row.index = initialIndex++;\n organisedRows.push(row);\n }\n }\n return initialIndex;\n };\n ExcelExport.prototype.processGridExport = function (gObj, exportProperties, r) {\n var excelRows = [];\n var isFrozen = this.parent.isFrozenGrid() && !this.parent.getFrozenColumns();\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if (gObj.childGrid && !isNullOrUndefined(exportProperties)) {\n gObj.hierarchyPrintMode = exportProperties.hierarchyExportMode || 'Expanded';\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var gColumns = isExportColumns(exportProperties) ?\n prepareColumns(exportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(isFrozen ? gObj.getColumns() : gObj.columns);\n var headerRow = helper.getHeaders(gColumns, this.includeHiddenColumn);\n var groupIndent = gObj.groupSettings.columns.length ? gObj.groupSettings.columns.length - 1 : 0;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length &&\n isNullOrUndefined(exportProperties.dataSource)) {\n if (exportProperties.exportType === 'CurrentPage' && (!gObj.groupSettings.enableLazyLoading\n || gObj.getDataModule().isRemote())) {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\n }\n else if (gObj.groupSettings.enableLazyLoading && !gObj.getDataModule().isRemote()) {\n var groupData = void 0;\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length) {\n var isAllPage = exportProperties.exportType === 'CurrentPage'\n ? false : true;\n var groupQuery = gObj.getDataModule().generateQuery(isAllPage);\n var lazyloadData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n groupQuery.lazyLoad = [];\n var fName = 'fn';\n if (!isAllPage) {\n for (var i = 0; i < groupQuery.queries.length; i++) {\n if (groupQuery.queries[parseInt(i.toString(), 10)]['' + fName] === 'onPage') {\n groupQuery.queries[parseInt(i.toString(), 10)].e.pageSize = lazyloadData.reduce(function (acc, curr) { return acc + curr['count']; }, 0);\n }\n }\n }\n if (exportProperties.hierarchyExportMode === 'All') {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n }\n else if (exportProperties.hierarchyExportMode === 'Expanded' || exportProperties.hierarchyExportMode === 'None' ||\n isNullOrUndefined(exportProperties.hierarchyExportMode)) {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n var lazQuery = this.parent.contentModule.lazyLoadQuery;\n for (var i = 0; i < lazQuery.length; i++) {\n var query = lazQuery[parseInt(i.toString(), 10)];\n var where = query[0];\n for (var j = 0; j < groupData.length; j++) {\n var data = groupData[parseInt(j.toString(), 10)];\n if (data['key'] === where['value']) {\n lazyloadData[parseInt(i.toString(), 10)] = groupData[parseInt(j.toString(), 10)];\n }\n }\n }\n groupData = lazyloadData;\n }\n }\n else {\n groupData = gObj.currentViewData;\n }\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, groupData, excelRows, helper);\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n gObj.notify(events.exportDataBound, { excelRows: excelRows, type: 'excel' });\n return excelRows;\n };\n ExcelExport.prototype.processRecordContent = function (gObj, returnType, headerRow, exportProperties, currentViewRecords, excelRow, helper) {\n var record;\n if (!isNullOrUndefined(currentViewRecords) && currentViewRecords.length) {\n record = currentViewRecords;\n }\n else {\n record = returnType.result;\n }\n if (!isNullOrUndefined(record.level)) {\n this.processGroupedRows(gObj, record, headerRow, record.level, 0, exportProperties, excelRow, helper);\n }\n else {\n this.processRecordRows(gObj, record, headerRow, 0, 0, exportProperties, excelRow, helper);\n }\n if (!isNullOrUndefined(returnType.aggregates) && Object.keys(returnType.aggregates).length > 0) {\n if (!isNullOrUndefined(currentViewRecords) && !this.parent.groupSettings.enableLazyLoading) {\n this.processAggregates(gObj, returnType.result, excelRow, currentViewRecords);\n }\n else {\n var result = returnType.result.GroupGuid ?\n returnType.result.records : returnType.result;\n this.processAggregates(gObj, result, excelRow);\n }\n }\n return excelRow;\n };\n ExcelExport.prototype.processGroupedRows = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n var cells = [];\n var index = 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = {};\n cell.index = (index + level) - 1;\n var col = gObj.getColumnByField(item.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel', data: item };\n this.parent.trigger(events.exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n if (!isNullOrUndefined(cArgs.style)) {\n cell.style = this.mergeOptions(cell.style, cArgs.style);\n }\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, (dataSource.level + dataSource.childLevels) - 1, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n var lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n var hIndex = 0;\n for (var _a = 0, _b = excelRows[excelRows.length - 1].cells; _a < _b.length; _a++) {\n var tCell = _b[_a];\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level - 1), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1), true);\n }\n }\n };\n ExcelExport.prototype.processRecordRows = function (gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n var index = 1;\n var cells = [];\n var columns = headerRow.columns;\n var rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n cells = [];\n startIndex++;\n index = 1;\n var templateRowHeight = void 0;\n for (var c = 0, len = row.cells.length; c < len; c++) {\n var gCell = row.cells[parseInt(c.toString(), 10)];\n if (gCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n var fkData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n fkData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, fkData);\n }\n if (!isNullOrUndefined(value)) {\n var cell = {};\n var idx = index + level + gObj.childGridLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(events.excelQueryCellInfo, excelCellArgs);\n if (!isNullOrUndefined(excelCellArgs.image) && !isNullOrUndefined(excelCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelCellArgs, idx);\n if (excelCellArgs.image.height && excelCellArgs.value !== '') {\n templateRowHeight += 30;\n }\n }\n if (!isNullOrUndefined(excelCellArgs.hyperLink)) {\n excelCellArgs.cell.hyperlink = { target: excelCellArgs.hyperLink.target };\n excelCellArgs.value = excelCellArgs.hyperLink.displayText || excelCellArgs.value;\n }\n cell = excelCellArgs.cell;\n cell.index = idx;\n cell.value = excelCellArgs.value;\n if (excelCellArgs.data === '' && gObj.childGridLevel && index === 1) {\n var style = {};\n style.hAlign = 'left';\n excelCellArgs = { style: style };\n cell.colSpan = gObj.getVisibleColumns().length;\n cell.value = this.l10n.getConstant('EmptyRecord');\n }\n if (excelCellArgs.colSpan > 1) {\n cell.colSpan = excelCellArgs.colSpan;\n }\n if (!isNullOrUndefined(excelCellArgs.style)) {\n var styleIndex = this.getColumnStyle(gObj, index + level);\n cell.style = this.mergeOptions(this.styles[parseInt(styleIndex.toString(), 10)], excelCellArgs.style);\n }\n else {\n cell.style = { name: gObj.element.id + 'column' + (index + level) };\n }\n cells.push(cell);\n }\n index++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n if (this.groupedColLength && this.groupedColLength < 8 && (level + 1) > 0) {\n excelRow.grouping = { outlineLevel: (level + 1), isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if ((row.isExpand || this.isChild) && !isNullOrUndefined(gObj.childGrid)) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(excelExportProperties) && excelExportProperties.exportType) ?\n excelExportProperties.exportType : 'AllPages';\n var returnVal = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnVal.childGrid;\n var element = returnVal.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n childGridObj.childGridLevel = gObj.childGridLevel + 1;\n var args = { childGrid: childGridObj, row: row, exportProperties: excelExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(excelRow, childGridObj, excelExportProperties, row);\n childGridObj.appendTo(element);\n }\n gObj.notify(events.exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\n };\n ExcelExport.prototype.setImage = function (args, idx) {\n if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelImage = {\n image: args.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n if (args.image.width && args.image.height) {\n excelImage.width = args.image.width;\n excelImage.height = args.image.height;\n }\n this.sheet.images.push(excelImage);\n this.columns[idx - 1].width = args.image.width || this.columns[idx - 1].width;\n return args.image.height || 50;\n };\n ExcelExport.prototype.childGridCell = function (excelRow, childGridObj, excelExportProps, gRow) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = _this.processGridExport(childGridObj, excelExportProps, result);\n var intent = _this.parent.groupSettings.columns.length;\n var rows = excelRow.childRows;\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].grouping = { outlineLevel: intent + childGridObj\n .childGridLevel, isCollapsed: !gRow.isExpand, isHidden: !gRow.isExpand };\n }\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return excelRow;\n };\n };\n ExcelExport.prototype.processAggregates = function (gObj, rec, excelRows, currentViewRecords, indent, byGroup) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var columns = summaryModel.getColumns();\n columns = columns.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n var data = undefined;\n if (!isNullOrUndefined(currentViewRecords)) {\n data = currentViewRecords;\n }\n else {\n data = rec;\n }\n if (indent === undefined) {\n indent = 0;\n }\n if (gObj.groupSettings.columns.length > 0 && byGroup) {\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n var groupSummaryRows = groupSummaryModel.generateRows(data, { level: data.level });\n if (groupSummaryRows.length > 0) {\n excelRows = this.fillAggregates(gObj, groupSummaryRows, indent, excelRows);\n }\n }\n else {\n indent = gObj.groupSettings.columns.length > 0 && !byGroup ? gObj.groupSettings.columns.length : indent;\n var sRows = summaryModel.generateRows(data, rec.aggregates, null, null, columns);\n if (sRows.length > 0 && !byGroup) {\n indent = gObj.groupSettings.columns.length ? indent - 1 : indent;\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eCell = {};\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if ((cell.visible || this.includeHiddenColumn)) {\n index++;\n if (cell.isDataCell) {\n isEmpty = false;\n var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n eCell.index = index + indent + gObj.childGridLevel;\n if (footerTemplate) {\n eCell.value = this.getAggreateValue(CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(CellType.CaptionSummary, cell.column.groupCaptionTemplate, cell, row);\n }\n else {\n for (var _c = 0, _d = Object.keys(row.data[cell.column.field]); _c < _d.length; _c++) {\n var key = _d[_c];\n if (key === cell.column.type) {\n if (!isNullOrUndefined(row.data[cell.column.field].Sum)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - sum\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Average)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - average\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Max)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - max\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Min)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - min\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Count)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - count\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].TrueCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - truecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].FalseCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - falsecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Custom)) {\n eCell.value = row.data[cell.column.field].Custom;\n }\n }\n }\n }\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n this.aggregateStyle(cell.column, eCell.style, cell.column.field);\n var gridCellStyle = cell.attributes.style;\n if (gridCellStyle.textAlign) {\n eCell.style.hAlign = gridCellStyle.textAlign.toLowerCase();\n }\n var args = {\n row: row,\n type: footerTemplate ? 'Footer' : groupFooterTemplate ? 'GroupFooter' : 'GroupCaption',\n style: eCell\n };\n this.parent.trigger(events.excelAggregateQueryCellInfo, args);\n cells.push(eCell);\n }\n else {\n if (customIndex === undefined) {\n eCell.index = index + indent + gObj.childGridLevel;\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n cells.push(eCell);\n }\n }\n }\n }\n if (!isNullOrUndefined(customIndex)) {\n excelRows.push({ index: customIndex, cells: cells });\n }\n else {\n var row_1 = {};\n if (this.groupedColLength < 8 && this.groupedColLength > 0) {\n var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\n var level = excelRows[excelRows.length - 1][\"\" + dummyGrouping][\"\" + dummyOutlineLevel];\n var grouping = { outlineLevel: level, isCollapsed: true };\n row_1 = { index: this.rowLength++, cells: cells, grouping: grouping };\n }\n else {\n row_1 = { index: this.rowLength++, cells: cells };\n }\n if (!isEmpty) {\n excelRows.push(row_1);\n }\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.aggregateStyle = function (col, style, field) {\n var column = this.parent.getColumnByField(field);\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n }\n if (!isNullOrUndefined(column) && isNullOrUndefined(style.type)) {\n style.type = column.type.toLowerCase();\n }\n };\n ExcelExport.prototype.getAggreateValue = function (cellType, template, cell, row) {\n var templateFn = {};\n templateFn[getEnumValue(CellType, cell.cellType)] = compile(template);\n var txt;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if (this.parent.isReact || this.parent.isVue) {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n return !isNullOrUndefined(txt[0]) ? txt[0].textContent : '';\n };\n ExcelExport.prototype.mergeOptions = function (JSON1, JSON2) {\n var result = {};\n var attrname = Object.keys(JSON1);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON1[attrname[parseInt(index.toString(), 10)]];\n }\n }\n attrname = Object.keys(JSON2);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON2[attrname[parseInt(index.toString(), 10)]];\n }\n }\n return result;\n };\n ExcelExport.prototype.getColumnStyle = function (gObj, columnIndex) {\n var index = 0;\n for (var _i = 0, _a = this.styles; _i < _a.length; _i++) {\n var style = _a[_i];\n if (style.name === gObj.element.id + 'column' + columnIndex) {\n return index;\n }\n index++;\n }\n return undefined;\n };\n ExcelExport.prototype.headerRotation = function (args) {\n var degree = args.style.rotation;\n if (degree <= 90 && degree >= 0) {\n args.style.hAlign = 'Left';\n }\n else if (degree > 90 && degree <= 180) {\n args.style.hAlign = 'Right';\n }\n else {\n degree = 180;\n args.style.hAlign = 'Right';\n }\n args.style.rotation = degree;\n };\n ExcelExport.prototype.processHeaderContent = function (gObj, headerRow, indent, excelRows) {\n var rowIndex = 1;\n var gridRows = headerRow.rows;\n // Column collection with respect to the records in the grid\n var gridColumns = headerRow.columns;\n var spannedCells = [];\n if (indent > 0) {\n var index = 0;\n while (index !== indent) {\n this.columns.push({ index: index + 1, width: 30 });\n index++;\n }\n }\n for (var col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[parseInt(col.toString(), 10)], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n var templateRowHeight;\n for (var row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[parseInt(row.toString(), 10)].cells.length; column++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var style = {};\n var cell = {};\n var gridCell = gridRows[parseInt(row.toString(), 10)].cells[parseInt(column.toString(), 10)];\n if (gridCell.cellType === CellType.HeaderIndent || gridCell.cellType === CellType.DetailHeader) {\n continue;\n }\n var result = { contains: true, index: 1 };\n while (result.contains) {\n result = this.getIndex(spannedCells, rowIndex, currentCellIndex);\n currentCellIndex = result.index;\n if (!result.contains) {\n cell.index = result.index + gObj.childGridLevel;\n break;\n }\n }\n if (!isNullOrUndefined(gridCell.rowSpan) && gridCell.rowSpan !== 1) {\n cell.rowSpan = gridCell.rowSpan;\n for (var i = rowIndex; i < gridCell.rowSpan + rowIndex; i++) {\n var spannedCell = { rowIndex: 0, columnIndex: 0 };\n spannedCell.rowIndex = i;\n spannedCell.columnIndex = currentCellIndex;\n spannedCells.push(spannedCell);\n }\n }\n if (!isNullOrUndefined(gridCell.colSpan) && gridCell.colSpan !== 1) {\n cell.colSpan = gridCell.colSpan;\n currentCellIndex = currentCellIndex + cell.colSpan - 1;\n }\n cell.value = gridCell.column.headerText;\n style = this.getHeaderThemeStyle(this.theme);\n if (!isNullOrUndefined(gridCell.column.textAlign)) {\n style.hAlign = gridCell.column.textAlign.toLowerCase();\n }\n if (!isNullOrUndefined(gridCell.column.headerTextAlign)) {\n style.hAlign = gridCell.column.headerTextAlign.toLowerCase();\n }\n var excelHeaderCellArgs = { cell: cell, gridCell: gridCell, style: style };\n gObj.trigger(events.excelHeaderQueryCellInfo, excelHeaderCellArgs);\n if (excelHeaderCellArgs.style.rotation) {\n this.headerRotation(excelHeaderCellArgs);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.image) && !isNullOrUndefined(excelHeaderCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelHeaderCellArgs, currentCellIndex);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.hyperLink)) {\n excelHeaderCellArgs.cell.hyperlink = { target: excelHeaderCellArgs.hyperLink.target };\n cell.value = excelHeaderCellArgs.hyperLink.displayText || cell.value;\n }\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n excelRows.push(excelRow);\n }\n return excelRows;\n };\n ExcelExport.prototype.getHeaderThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n };\n ExcelExport.prototype.updateThemeStyle = function (themestyle, style) {\n return extend(style, themestyle);\n };\n ExcelExport.prototype.getCaptionThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n };\n ExcelExport.prototype.getRecordThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n };\n ExcelExport.prototype.processExcelHeader = function (header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n var noRows = void 0;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (var row = 0; row < noRows; row++) {\n var json = header.rows[parseInt(row.toString(), 10)];\n //Row index\n if (!(json.index !== null && !isNullOrUndefined(json.index))) {\n json.index = (row + 1);\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.updatedCellIndex = function (json) {\n var cellsLength = json.cells.length;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n var jsonCell = json.cells[parseInt(cellId.toString(), 10)];\n //cell index\n if (!(jsonCell.index !== null && !isNullOrUndefined(jsonCell.index))) {\n jsonCell.index = (cellId + 1);\n }\n }\n this.rows.push(json);\n };\n ExcelExport.prototype.processExcelFooter = function (footer) {\n if (!isNullOrUndefined(footer.rows)) {\n var noRows = void 0;\n if (footer.footerRows === undefined) {\n this.rowLength += footer.rows.length;\n }\n else {\n if (footer.footerRows > footer.rows.length) {\n this.rowLength += (footer.footerRows - footer.rows.length);\n noRows = footer.rows.length;\n }\n else {\n noRows = footer.footerRows;\n }\n }\n for (var row = 0; row < noRows; row++) {\n var json = footer.rows[parseInt(row.toString(), 10)];\n //Row index\n if (json.index === null || json.index === undefined) {\n json.index = this.rowLength++;\n }\n else {\n json.index += this.rowLength;\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.getIndex = function (spannedCells, rowIndex, columnIndex) {\n for (var _i = 0, spannedCells_1 = spannedCells; _i < spannedCells_1.length; _i++) {\n var spannedCell = spannedCells_1[_i];\n if ((spannedCell.rowIndex === rowIndex) && (spannedCell.columnIndex === columnIndex)) {\n columnIndex = columnIndex + 1;\n return { contains: true, index: columnIndex };\n }\n }\n return { contains: false, index: columnIndex };\n };\n ExcelExport.prototype.parseStyles = function (gObj, col, style, index) {\n if (!isNullOrUndefined(col.format)) {\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = col.type;\n }\n }\n if (!isNullOrUndefined(col.textAlign)) {\n style.hAlign = col.textAlign.toLowerCase();\n }\n if (Object.keys(style).length > 0) {\n style.name = gObj.element.id + 'column' + index;\n this.styles.push(style);\n }\n if (!isNullOrUndefined(col.width) && col.width !== 'auto') {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n };\n ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ExcelFilterBase } from '../common/excel-filter-base';\nimport { CheckBoxFilter } from './checkbox-filter';\nimport * as events from '../base/constant';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @class */ (function (_super) {\n __extends(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the Filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @param {object} customFltrOperators - specifies the customFltrOperators\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\nexport { ExcelFilter };\n","import { Row } from './../models/row';\nimport { CellType } from '../base/enum';\nimport { isNullOrUndefined, Internationalization, getValue, createElement } from '@syncfusion/ej2-base';\nimport { Cell } from '../models/cell';\nimport { ValueFormatter } from './../services/value-formatter';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getForeignData, measureColumnDepth, getUid } from '../base/util';\nimport { Grid } from '../base/grid';\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nvar ExportHelper = /** @class */ (function () {\n function ExportHelper(parent, foreignKeyData) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n if (!parent.parentDetails && foreignKeyData) {\n this.foreignKeyData = foreignKeyData;\n }\n }\n ExportHelper.getQuery = function (parent, data) {\n var query = data.generateQuery(true).requiresCount();\n if (data.isRemote()) {\n if (parent.groupSettings.enableLazyLoading && parent.groupSettings.columns.length) {\n query.lazyLoad = [];\n }\n else {\n query.take(parent.pageSettings.totalRecordsCount);\n }\n }\n return query;\n };\n ExportHelper.prototype.getFData = function (value, column) {\n var foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n };\n ExportHelper.prototype.getGridRowModel = function (columns, dataSource, gObj, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n var rows = [];\n var length = dataSource.length;\n if (length) {\n for (var i = 0; i < length; i++, startIndex++) {\n var options = { isExpand: false };\n options.data = dataSource[parseInt(i.toString(), 10)];\n options.index = startIndex;\n if (gObj.childGrid) {\n if (gObj.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (gObj.hierarchyPrintMode === 'Expanded' &&\n this.parent.expandedRows && this.parent.expandedRows[parseInt(startIndex.toString(), 10)]) {\n options.isExpand = gObj.expandedRows[parseInt(startIndex.toString(), 10)].isExpand;\n }\n }\n var row = new Row(options);\n row.cells = this.generateCells(columns, gObj);\n rows.push(row);\n }\n this.processColumns(rows);\n }\n return rows;\n };\n ExportHelper.prototype.generateCells = function (columns, gObj) {\n var cells = [];\n if (gObj.childGridLevel) {\n var len = gObj.childGridLevel;\n for (var i = 0; len > i; i++) {\n cells.push(this.generateCell({}, CellType.Indent));\n }\n }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n cells.push(this.generateCell(col, CellType.Data));\n }\n return cells;\n };\n ExportHelper.prototype.getColumnData = function (gridObj) {\n var _this = this;\n var columnPromise = [];\n var promise;\n var fColumns = gridObj.getForeignKeyColumns();\n if (fColumns.length) {\n for (var i = 0; i < fColumns.length; i++) {\n var colData = ('result' in fColumns[parseInt(i.toString(), 10)].dataSource) ?\n new DataManager(fColumns[parseInt(i.toString(), 10)].dataSource.result) :\n fColumns[parseInt(i.toString(), 10)].dataSource;\n columnPromise.push(colData.executeQuery(new Query()));\n }\n promise = Promise.all(columnPromise).then(function (e) {\n for (var j = 0; j < fColumns.length; j++) {\n _this.foreignKeyData[fColumns[parseInt(j.toString(), 10)].field] = e[parseInt(j.toString(), 10)].result;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n return promise;\n };\n ExportHelper.prototype.getHeaders = function (columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n var rows = [];\n for (var i = 0; i < this.colDepth; i++) {\n rows[parseInt(i.toString(), 10)] = new Row({});\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.processColumns(rows);\n rows = this.processHeaderCells(rows, columns);\n return { rows: rows, columns: this.generateActualColumns(columns) };\n };\n ExportHelper.prototype.getConvertedWidth = function (input) {\n var value = parseFloat(input);\n return (input.indexOf('%') !== -1) ? (this.parent.element.getBoundingClientRect().width * value / 100) : value;\n };\n ExportHelper.prototype.generateActualColumns = function (columns, actualColumns) {\n if (actualColumns === void 0) { actualColumns = []; }\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var column = columns_2[_i];\n if (column.commands) {\n continue;\n }\n if (!column.columns) {\n if (column.visible || this.hideColumnInclude) {\n actualColumns.push(column);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n var colSpan = this.getCellCount(column, 0);\n if (colSpan !== 0) {\n this.generateActualColumns(column.columns, actualColumns);\n }\n }\n }\n }\n return actualColumns;\n };\n ExportHelper.prototype.processHeaderCells = function (rows, cols) {\n var columns = cols;\n for (var i = 0; i < columns.length; i++) {\n if (!columns[parseInt(i.toString(), 10)].commands) {\n rows = this.appendGridCells(columns[parseInt(i.toString(), 10)], rows, 0);\n }\n }\n return rows;\n };\n ExportHelper.prototype.appendGridCells = function (cols, gridRows, index) {\n if (!cols.columns && (cols.visible !== false || this.hideColumnInclude) && !cols.commands) {\n gridRows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, index));\n }\n else if (cols.columns) {\n var colSpan = this.getCellCount(cols, 0);\n if (colSpan) {\n gridRows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols, colSpan: colSpan\n }));\n }\n var isIgnoreFirstCell = void 0;\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n if (cols.columns[parseInt(i.toString(), 10)].visible && !isIgnoreFirstCell) {\n isIgnoreFirstCell = true;\n }\n gridRows = this.appendGridCells(cols.columns[parseInt(i.toString(), 10)], gridRows, index + 1);\n }\n }\n return gridRows;\n };\n ExportHelper.prototype.generateCell = function (gridColumn, cellType, rowSpan, rowIndex) {\n var option = {\n 'visible': gridColumn.visible,\n 'isDataCell': cellType === CellType.Data,\n 'column': gridColumn,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'index': rowIndex\n };\n if (!option.rowSpan || option.rowSpan < 2) {\n delete option.rowSpan;\n }\n return new Cell(option);\n };\n ExportHelper.prototype.processColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gridObj = this.parent;\n var columnIndexes = [];\n if (gridObj.enableColumnVirtualization) {\n columnIndexes = gridObj.getColumnIndexesInView();\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gridObj.allowGrouping) {\n for (var j = 0, len_1 = gridObj.groupSettings.columns.length - 1; j < len_1; j++) {\n if (gridObj.enableColumnVirtualization && columnIndexes.indexOf(j) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.splice(0, 0, this.generateCell({}, CellType.HeaderIndent));\n }\n }\n }\n return rows;\n };\n ExportHelper.prototype.getCellCount = function (column, count) {\n if (column.columns) {\n for (var i = 0; i < column.columns.length; i++) {\n count = this.getCellCount(column.columns[parseInt(i.toString(), 10)], count);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n count++;\n }\n }\n return count;\n };\n ExportHelper.prototype.checkAndExport = function (gridPool, globalResolve) {\n var bool = Object.keys(gridPool).some(function (key) {\n return !gridPool[\"\" + key];\n });\n if (!bool) {\n globalResolve();\n }\n };\n ExportHelper.prototype.failureHandler = function (gridPool, childGridObj, resolve) {\n var _this = this;\n return function () {\n gridPool[childGridObj.id] = true;\n _this.checkAndExport(gridPool, resolve);\n };\n };\n ExportHelper.prototype.createChildGrid = function (gObj, row, exportType, gridPool) {\n var childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n var parent = 'parentDetails';\n childGridObj[\"\" + parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n var exportId = getUid('child-grid');\n var element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[\"\" + exportId] = false;\n childGridObj.isExportGrid = true;\n return { childGrid: childGridObj, element: element };\n };\n ExportHelper.prototype.getGridExportColumns = function (columns) {\n var actualGridColumns = [];\n for (var i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[parseInt(i.toString(), 10)]);\n }\n }\n return actualGridColumns;\n };\n /**\n * Gets the foreignkey data.\n *\n * @returns {ForeignKeyFormat} returns the foreignkey data\n * @hidden\n */\n ExportHelper.prototype.getForeignKeyData = function () {\n return this.foreignKeyData;\n };\n return ExportHelper;\n}());\nexport { ExportHelper };\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nvar ExportValueFormatter = /** @class */ (function () {\n function ExportValueFormatter(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n ExportValueFormatter.prototype.returnFormattedValue = function (args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n };\n /**\n * Used to format the exporting cell value\n *\n * @param {ExportHelperArgs} args - Specifies cell details.\n * @returns {string} returns formated value\n * @hidden\n */\n ExportValueFormatter.prototype.formatCellValue = function (args) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n if (typeof args.column.format === 'string') {\n args.column.format = { format: args.column.format };\n }\n return args.value || args.value === 0 ?\n this.internationalization.getNumberFormat(args.column.format)(args.value) : '';\n }\n else if (args.column.type === 'boolean' && args.value !== '') {\n return args.value ? 'true' : 'false';\n /* tslint:disable-next-line:max-line-length */\n }\n else if ((args.column.type === 'date' || args.column.type === 'datetime' || args.column.type === 'time') && args.column.format !== undefined) {\n if (typeof args.value === 'string') {\n args.value = new Date(args.value);\n }\n if (typeof args.column.format === 'string') {\n var format = void 0;\n var cFormat = args.column.format;\n if (args.column.type === 'date') {\n format = { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = { type: 'time', skeleton: cFormat };\n }\n else {\n format = { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n var customFormat = void 0;\n if (args.column.type === 'date') {\n customFormat = {\n type: args.column.format.type,\n format: args.column.format.format, skeleton: args.column.format.skeleton\n };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n };\n return ExportValueFormatter;\n}());\nexport { ExportValueFormatter };\n","import { isNullOrUndefined, getValue, remove } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { FlMenuOptrUI } from './filter-menu-operator';\nimport { StringFilterUI } from './string-filter-ui';\nimport { NumberFilterUI } from './number-filter-ui';\nimport { BooleanFilterUI } from './boolean-filter-ui';\nimport { DateFilterUI } from './date-filter-ui';\nimport { getFilterMenuPostion, parentsUntil, appendChildren, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n if (!this.dlgObj) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(events.filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n this.dlgObj.destroy();\n remove(elem);\n }\n this.parent.notify(events.filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-flmenu-okbtn' + ' ' + this.parent.cssClass : 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'),\n cssClass: this.parent.cssClass ? 'e-flmenu-cancelbtn' + ' ' + this.parent.cssClass : 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? 'e-filter-popup' + ' ' + this.parent.cssClass : 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj);\n }\n this.currentDialogCreatedColumn = column;\n this.renderFilterUI(target, column);\n if (!(column.isForeignColumn() && !(!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)))) {\n this.afterRenderFilterUI();\n }\n };\n /**\n * Function to notify filterDialogCreated and trigger actionComplete\n *\n * @returns {void}\n * @hidden\n */\n FilterMenuRenderer.prototype.afterRenderFilterUI = function () {\n var column = this.currentDialogCreatedColumn;\n if (column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n var optrInput = this.dlgObj.element.querySelector('.e-flm_optrdiv').querySelector('input');\n var valInput = this.dlgObj.element.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (optrInput.value === 'Empty' || optrInput.value === 'Not Empty' ||\n optrInput.value === 'Null' || optrInput.value === 'Not Null') {\n valInput.setAttribute('disabled', '');\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput.removeAttribute('disabled');\n }\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[\"\" + valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n var flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isNullOrUndefined(element.children[0].ej2_instances)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fltrValue = (this.parent.isAngular ? element.children[0] :\n element.querySelector('input')).ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n // eslint-disable-next-line\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n if (this.parent.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n var iconClass = this.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = this.parent.element.querySelector('[e-mappinguid=\"' + column.uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (flIcon) {\n flIcon.classList.remove('e-filtered');\n }\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\nexport { FilterMenuRenderer };\n","import { EventHandler, isNullOrUndefined, extend, closest, getValue } from '@syncfusion/ej2-base';\nimport { getActualPropFromColl, isActionPrevent, getColumnByForeignKeyValue } from '../base/util';\nimport { remove, matches } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { CellType, ResponsiveDialogAction } from '../base/enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport { FilterCellRenderer } from '../renderer/filter-cell-renderer';\nimport { parentsUntil } from '../base/util';\nimport { FilterMenuRenderer } from '../renderer/filter-menu-renderer';\nimport { CheckBoxFilter } from '../actions/checkbox-filter';\nimport { ExcelFilter } from '../actions/excel-filter';\nimport * as literals from '../base/string-literals';\nimport { Input } from '@syncfusion/ej2-inputs';\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Grid filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filterSettings\n * @param {ServiceLocator} serviceLocator - specifes the serviceLocator\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e) || (this.parent.getFrozenMode() === literals.leftRight &&\n DataUtil.getObject('args.renderFrozenRightContent', e))) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar' });\n var row = this.generateRow();\n row.data = this.values;\n if (gObj.getFrozenMode() === 'Right') {\n var thead = gObj.getFrozenRightHeader().querySelector('thead');\n thead.appendChild(rowRenderer.element);\n }\n else {\n this.parent.getHeaderContent().querySelector('thead:not(.e-masked-thead)').appendChild(rowRenderer.element);\n }\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n rowdrag.className = 'e-dragheadercell e-mastercell';\n }\n var gCells = [].slice.call(this.element.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(events.freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n /**\n * To create the filter module.\n *\n * @param {Column} col - specifies the filtering column name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[\"\" + type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowFiltering)) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n var dropdownlist = [].slice.call(this.element.getElementsByClassName('e-filterbaroperator'));\n for (var i = 0; i < dropdownlist.length; i++) {\n if (dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0]) {\n dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (this.parent.isFrozenGrid() && filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function () {\n var options = {};\n var row = new Row(options);\n row.cells = this.generateCells();\n return row;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n var moduleName = this.parent.dataSource.adaptor && this.parent.dataSource.adaptor.getModuleName ? this.parent.dataSource.adaptor.getModuleName() : undefined;\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n var isMenuNotEqual = this.operator === 'notequal';\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[parseInt(i.toString(), 10)], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[parseInt(index.toString(), 10)] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n if (!this.column.isForeignColumn() && isNullOrUndefined(this.value) && (this.operator === 'equal' ||\n this.operator === 'notequal') && (moduleName !== 'ODataAdaptor' && moduleName !== 'ODataV4Adaptor')) {\n for (var i_1 = 0; i_1 < this.filterSettings.columns.length; i_1++) {\n if (this.filterSettings.columns[\"\" + i_1].field === field &&\n (this.filterSettings.columns[\"\" + i_1].operator === 'equal' || this.filterSettings.columns[\"\" + i_1].operator === 'notequal')\n && isNullOrUndefined(this.filterSettings.columns[\"\" + i_1].value)) {\n this.filterSettings.columns.splice(i_1, 1);\n i_1 = i_1 - 1;\n }\n }\n if (col.type === 'string') {\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: ''\n });\n }\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: undefined\n });\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: null\n });\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].uid === col.uid || (col.isForeignColumn()\n && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: events.actionComplete\n } : {\n requestType: 'filtering', type: events.actionComplete\n };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length) {\n this.initialEnd();\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.filterComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.headerRefreshed, this.render, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.filterMenuClose, this.filterMenuClose, this);\n this.docClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.docClickHandler, this);\n EventHandler.add(this.parent.element, 'mousedown', this.refreshClearIcon, this);\n this.parent.on(events.filterOpen, this.columnMenuFilter, this);\n this.parent.on(events.click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(events.closeFilterDialog, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.docClickHandler);\n EventHandler.remove(this.parent.element, 'mousedown', this.refreshClearIcon);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.filterComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.keyPressed, this.keyUpHandler);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.off(events.headerRefreshed, this.render);\n this.parent.off(events.filterOpen, this.columnMenuFilter);\n this.parent.off(events.filterMenuClose, this.filterMenuClose);\n this.parent.off(events.click, this.filterIconClickHandler);\n this.parent.off(events.closeFilterDialog, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n Filter.prototype.refreshClearIcon = function (e) {\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' &&\n e.target.closest('th') && e.target.closest('th').classList.contains('e-filterbarcell') &&\n e.target.classList.contains('e-clear-icon')) {\n var targetText = e.target.previousElementSibling;\n Input.setValue(null, targetText, 'Never', true);\n if (this.filterSettings.mode === 'Immediate') {\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterMenuClose = function () {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator\n && isNullOrUndefined(this.column.filterBarTemplate) && isNullOrUndefined(this.column.filterTemplate)) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (filterOperator === 'like' && filterValue.indexOf('%') === -1) {\n filterValue = '%' + filterValue + '%';\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) ? filterValue.toString() : filterValue;\n if (filterValue === '') {\n filterValue = null;\n }\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n gObj.getColumnHeaderByField(this.column.isForeignColumn() ? this.column.field : fieldName).setAttribute('aria-filtered', 'true');\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if ((filterValue && filterValue.length < 1) || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = (filterValue && filterValue.length < 1) ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var _this = this;\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime') && filterValue &&\n Array.isArray(this.value) && filterValue.split(',').length > 1) {\n this.values[this.column.field] = ((filterValue).split(',')).map(function (val) {\n if (val === '') {\n val = null;\n }\n return _this.setFormatForFlColumn(new Date(val), _this.column);\n });\n }\n else {\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[parseInt(i.toString(), 10)]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var col = 'columns';\n // eslint-disable-next-line no-case-declarations\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: events.actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[\"\" + col])) {\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n return;\n }\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[\"\" + prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[parseInt(i.toString(), 10)].uid);\n var filterValue = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[parseInt(i.toString(), 10)].field;\n this.values[\"\" + key] = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[parseInt(i.toString(), 10)].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[parseInt(i.toString(), 10)].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[parseInt(i.toString(), 10)].removeAttribute('aria-filtered');\n fltrIconElement[parseInt(i.toString(), 10)].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n * @returns {void}\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - returns the fields\n * @returns {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[parseInt(i.toString(), 10)]).field, false);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].removeAttribute('aria-filtered');\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /**\n * Create filter dialog options\n *\n * @param {Column} col - Filtering column detail.\n * @param {Element} target - Filter dialog target.\n * @param {number} left - Filter dialog left position.\n * @param {number} top - Filter dialog top position.\n * @returns {Object} returns the created dialog options\n * @hidden\n */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal'\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(events.preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n var _loop_1 = function (i, len) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this_1.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[parseInt(i.toString(), 10)]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[\"\" + field];\n }\n }\n while (len_1--) {\n if (cols[parseInt(len_1.toString(), 10)].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n fltrElement.removeAttribute('aria-filtered');\n if (this_1.filterSettings.type !== 'FilterBar' || this_1.parent.showColumnMenu) {\n var iconClass = this_1.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[\"\" + field]) {\n delete this_1.actualPredicate[\"\" + field];\n }\n if (this_1.values[\"\" + field]) {\n delete this_1.values[\"\" + field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar') {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(events.restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[parseInt(index.toString(), 10)].uid)\n || gObj.grabColumnByFieldFromAllCols(columns[parseInt(index.toString(), 10)].field);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), column.type) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging\n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[\"\" + value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement && this.parent.isFrozenGrid()) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent);\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[parseInt(i.toString(), 10)]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n if (value.indexOf('*') !== -1 || value.indexOf('?') !== -1 || value.indexOf('%3f') !== -1) {\n this.operator = this.filterOperators.wildCard;\n }\n else if (value.indexOf('%') !== -1) {\n this.operator = this.filterOperators.like;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n // eslint-disable-next-line no-prototype-builtins\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[\"\" + singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[\"\" + multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnull', text: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', text: this.l10n.getConstant('NotNull') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'isempty', text: this.l10n.getConstant('IsEmpty') },\n { value: 'doesnotstartwith', text: this.l10n.getConstant('NotStartsWith') },\n { value: 'doesnotendwith', text: this.l10n.getConstant('NotEndsWith') },\n { value: 'doesnotcontain', text: this.l10n.getConstant('NotContains') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnotempty', text: this.l10n.getConstant('IsNotEmpty') },\n { value: 'like', text: this.l10n.getConstant('Like') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter(false);\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n var filterOperatorElement = closest(e.target, 'div').\n querySelector('.e-filterbaroperator');\n if (filterOperatorElement) {\n filterOperatorElement.focus();\n }\n else {\n e.target.focus();\n }\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id;\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n var result = dataManager.executeLocal(query);\n for (var i = 0; i < result.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (result[parseInt(i.toString(), 10)].field === this.filterSettings.columns[parseInt(j.toString(), 10)].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var col = this.parent.getColumnByField(args.field);\n var iconClass = this.parent.showColumnMenu && col.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field) ||\n getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[parseInt(i.toString(), 10)].field;\n if (!this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field)) {\n fieldName = getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns()).field;\n }\n this.refreshFilterIcon(fieldName, cols[parseInt(i.toString(), 10)].operator, cols[parseInt(i.toString(), 10)].value, cols[parseInt(i.toString(), 10)].type, cols[parseInt(i.toString(), 10)].predicate, cols[parseInt(i.toString(), 10)].matchCase, cols[parseInt(i.toString(), 10)].ignoreAccent, cols[parseInt(i.toString(), 10)].uid);\n }\n };\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n if (this.actualPredicate[\"\" + fieldName]) {\n this.actualPredicate[\"\" + fieldName].push(obj);\n }\n else {\n this.actualPredicate[\"\" + fieldName] = [obj];\n }\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n var col = this.parent.getColumnByField(fieldName);\n if (this.parent.showColumnMenu && col.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (col) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { initForeignKeyColumn, getForeignKeyData, generateQuery } from '../base/constant';\nimport { getDatePredicate } from '../base/util';\nimport { Data } from './data';\nimport * as events from '../base/constant';\n/**\n * `ForeignKey` module is used to handle foreign key column's actions.\n */\nvar ForeignKey = /** @class */ (function (_super) {\n __extends(ForeignKey, _super);\n function ForeignKey(parent, serviceLocator) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.initEvent();\n return _this;\n }\n ForeignKey.prototype.initEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initForeignKeyColumn, this.initForeignKeyColumns, this);\n this.parent.on(getForeignKeyData, this.getForeignKeyData, this);\n this.parent.on(generateQuery, this.generateQueryFormData, this);\n };\n ForeignKey.prototype.initForeignKeyColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].dataSource = (columns[parseInt(i.toString(), 10)].dataSource instanceof DataManager ?\n columns[parseInt(i.toString(), 10)].dataSource :\n (isNullOrUndefined(columns[parseInt(i.toString(), 10)].dataSource) ? new DataManager() :\n 'result' in columns[parseInt(i.toString(), 10)].dataSource ? columns[parseInt(i.toString(), 10)].dataSource :\n new DataManager(columns[parseInt(i.toString(), 10)].dataSource)));\n }\n };\n ForeignKey.prototype.eventfPromise = function (args, query, key, column) {\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n state.action = args.action;\n var dataModule = this.parent.getDataModule();\n if (!isNullOrUndefined(args.action) && args.action.requestType && dataModule.foreignKeyDataState.isDataChanged !== false) {\n dataModule.setForeignKeyDataState({\n isPending: true, resolver: deff.resolve\n });\n deff.promise.then(function () {\n def.resolve(column.dataSource);\n });\n state.setColumnData = this.parent.setForeignKeyData.bind(this.parent);\n this.parent.trigger(events.columnDataStateChange, state);\n }\n else {\n dataModule.setForeignKeyDataState({});\n def.resolve(key);\n }\n return def;\n };\n ForeignKey.prototype.getForeignKeyData = function (args) {\n var _this = this;\n var foreignColumns = args.column ? [args.column] : this.parent.getForeignKeyColumns();\n var allPromise = [];\n var _loop_1 = function (i) {\n var promise = void 0;\n var query = args.isComplex ? this_1.genarateColumnQuery(foreignColumns[parseInt(i.toString(), 10)]) :\n this_1.genarateQuery(foreignColumns[parseInt(i.toString(), 10)], args.result.result, false, true);\n query.params = this_1.parent.query.params;\n var dataSource = foreignColumns[parseInt(i.toString(), 10)].dataSource;\n if (dataSource && 'result' in dataSource) {\n var def = this_1.eventfPromise(args, query, dataSource, foreignColumns[parseInt(i.toString(), 10)]);\n promise = def.promise;\n }\n else if (!dataSource.ready || dataSource.dataSource.offline) {\n promise = dataSource.executeQuery(query);\n }\n else {\n promise = dataSource.ready.then(function () {\n return dataSource.executeQuery(query);\n });\n }\n allPromise.push(promise);\n };\n var this_1 = this;\n for (var i = 0; i < foreignColumns.length; i++) {\n _loop_1(i);\n }\n Promise.all(allPromise).then(function (responses) {\n for (var i = 0; i < responses.length; i++) {\n foreignColumns[parseInt(i.toString(), 10)].columnData = responses[parseInt(i.toString(), 10)].result;\n if (foreignColumns[parseInt(i.toString(), 10)].editType === 'dropdownedit' && 'result' in foreignColumns[parseInt(i.toString(), 10)].dataSource) {\n foreignColumns[parseInt(i.toString(), 10)].edit.params = extend(foreignColumns[parseInt(i.toString(), 10)]\n .edit.params, {\n dataSource: responses[parseInt(i.toString(), 10)].result,\n query: new Query(), fields: {\n value: foreignColumns[parseInt(i.toString(), 10)].foreignKeyField ||\n foreignColumns[parseInt(i.toString(), 10)].field,\n text: foreignColumns[parseInt(i.toString(), 10)].foreignKeyValue\n }\n });\n }\n }\n args.promise.resolve(args.result);\n }).catch(function (e) {\n _this.parent.log(['actionfailure', 'foreign_key_failure']);\n if (args.promise && args.promise.reject) {\n args.promise.reject(e);\n }\n return e;\n });\n };\n ForeignKey.prototype.generateQueryFormData = function (args) {\n args.predicate.predicate = this.genarateQuery(args.column, args.column.columnData, true);\n };\n ForeignKey.prototype.genarateQuery = function (column, e, fromData, needQuery) {\n var gObj = this.parent;\n var predicates = [];\n var query = new Query();\n var field = fromData ? column.foreignKeyField : column.field;\n if (gObj.allowPaging || gObj.enableVirtualization || fromData) {\n e = new DataManager(((gObj.allowGrouping && gObj.groupSettings.columns.length && !fromData) ?\n e.records : e)).executeLocal(new Query().select(field));\n var filteredValue = DataUtil.distinct(e, field, false);\n field = fromData ? column.field : column.foreignKeyField;\n for (var i = 0; i < filteredValue.length; i++) {\n if (filteredValue[parseInt(i.toString(), 10)] && filteredValue[parseInt(i.toString(), 10)].getDay) {\n predicates.push(getDatePredicate({ field: field, operator: 'equal', value: filteredValue[parseInt(i.toString(), 10)], matchCase: false }));\n }\n else {\n predicates.push(new Predicate(field, 'equal', filteredValue[parseInt(i.toString(), 10)], false));\n }\n }\n }\n if (needQuery) {\n return predicates.length ? query.where(Predicate.or(predicates)) : query;\n }\n return (predicates.length ? Predicate.or(predicates) : { predicates: [] });\n };\n ForeignKey.prototype.genarateColumnQuery = function (column) {\n var gObj = this.parent;\n var query = new Query();\n var queryColumn = this.isFiltered(column);\n if (queryColumn.isTrue) {\n query = this.filterQuery(query, queryColumn.column, true);\n }\n if (gObj.searchSettings.key.length) {\n var sSettings = gObj.searchSettings;\n if (column.dataSource instanceof DataManager && (column.dataSource.adaptor.getModuleName &&\n column.dataSource.adaptor.getModuleName() === 'ODataV4Adaptor')) {\n query = this.searchQuery(query, column, true);\n }\n else {\n query.search(sSettings.key, column.foreignKeyValue, sSettings.operator, sSettings.ignoreCase);\n }\n }\n return query;\n };\n ForeignKey.prototype.isFiltered = function (column) {\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === column.foreignKeyValue && fColumn.uid === column.uid);\n });\n return {\n column: filterColumn, isTrue: !!filterColumn.length\n };\n };\n ForeignKey.prototype.getModuleName = function () {\n return 'foreignKey';\n };\n ForeignKey.prototype.destroy = function () {\n this.destroyEvent();\n };\n ForeignKey.prototype.destroyEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initForeignKeyColumn, this.initForeignKeyColumns);\n this.parent.off(getForeignKeyData, this.getForeignKeyData);\n this.parent.off(generateQuery, this.generateQueryFormData);\n };\n return ForeignKey;\n}(Data));\nexport { ForeignKey };\n","import * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { FreezeRender, FreezeContentRender } from '../renderer/freeze-renderer';\nimport { VirtualFreezeRenderer, VirtualFreezeHdrRenderer, ColumnVirtualFreezeRenderer } from '../renderer/virtual-freeze-renderer';\nimport { ColumnFreezeContentRenderer, ColumnFreezeHeaderRenderer } from '../renderer/column-freeze-renderer';\n/**\n * `Freeze` module is used to handle Frozen rows and columns.\n *\n * @hidden\n */\nvar Freeze = /** @class */ (function () {\n function Freeze(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n Freeze.prototype.getModuleName = function () {\n return 'freeze';\n };\n Freeze.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n Freeze.prototype.instantiateRenderer = function () {\n this.parent.log('limitation', this.getModuleName());\n var renderer = this.locator.getService('rendererFactory');\n if (this.parent.getFrozenColumns()) {\n if (this.parent.enableColumnVirtualization) {\n renderer.addRenderer(RenderType.Header, new VirtualFreezeHdrRenderer(this.parent, this.locator));\n }\n else {\n renderer.addRenderer(RenderType.Header, new FreezeRender(this.parent, this.locator));\n }\n if (this.parent.enableVirtualization) {\n renderer.addRenderer(RenderType.Content, new VirtualFreezeRenderer(this.parent, this.locator));\n }\n else {\n renderer.addRenderer(RenderType.Content, new FreezeContentRender(this.parent, this.locator));\n }\n }\n if (this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenRightColumnsCount()) {\n renderer.addRenderer(RenderType.Header, new ColumnFreezeHeaderRenderer(this.parent, this.locator));\n if (this.parent.enableVirtualization) {\n renderer.addRenderer(RenderType.Content, new ColumnVirtualFreezeRenderer(this.parent, this.locator));\n }\n else {\n renderer.addRenderer(RenderType.Content, new ColumnFreezeContentRenderer(this.parent, this.locator));\n }\n }\n };\n Freeze.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialLoad, this.instantiateRenderer);\n this.parent.off(events.destroy, this.destroy);\n };\n Freeze.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Freeze;\n}());\nexport { Freeze };\n","import { Draggable, Droppable, EventHandler } from '@syncfusion/ej2-base';\nimport { createElement, closest, remove, classList, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { parentsUntil, isActionPrevent, isGroupAdaptive, updatecloneRow, getComplexFieldID, isComplexField, findCellIndex } from '../base/util';\nimport { generateExpandPredicates, getPredicates, capitalizeFirstLetter } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * The `Group` module is used to handle group action.\n */\nvar Group = /** @class */ (function () {\n /**\n * Constructor for Grid group module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {GroupSettingsModel} groupSettings - specifies the GroupSettingsModel\n * @param {string[]} sortedColumns - specifies the sortedColumns\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Group(parent, groupSettings, sortedColumns, serviceLocator) {\n var _this = this;\n //Internal variables\n this.sortRequired = true;\n /** @hidden */\n this.groupSortFocus = false;\n /** @hidden */\n this.groupTextFocus = false;\n /** @hidden */\n this.groupCancelFocus = false;\n this.isAppliedGroup = false;\n this.isAppliedUnGroup = false;\n this.isAppliedCaptionRowBorder = false;\n this.reorderingColumns = [];\n this.visualElement = createElement('div', {\n className: 'e-cloneproperties e-dragclone e-gdclone',\n styles: 'line-height:23px', attrs: { action: 'grouping' }\n });\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = e.sender.target;\n var element = target.classList.contains('e-groupheadercell') ? target :\n parentsUntil(target, 'e-groupheadercell');\n if (!element || (!target.classList.contains('e-drag') && _this.groupSettings.allowReordering)) {\n return false;\n }\n _this.column = gObj.getColumnByField(element.firstElementChild.getAttribute('ej-mappingname'));\n _this.visualElement.textContent = element.textContent;\n _this.visualElement.style.width = element.offsetWidth + 2 + 'px';\n _this.visualElement.style.height = element.offsetHeight + 2 + 'px';\n _this.visualElement.setAttribute('e-mappinguid', _this.column.uid);\n gObj.element.appendChild(_this.visualElement);\n return _this.visualElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.dragStart = function (e) {\n _this.parent.element.classList.add('e-ungroupdrag');\n };\n this.drag = function (e) {\n if (_this.groupSettings.allowReordering) {\n _this.animateDropper(e);\n }\n var target = e.target;\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n _this.parent.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: _this.column });\n if (!_this.groupSettings.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!(parentsUntil(target, literals.gridContent) || parentsUntil(target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n };\n this.dragStop = function (e) {\n _this.parent.element.classList.remove('e-ungroupdrag');\n var preventDrop = !(parentsUntil(e.target, literals.gridContent) || parentsUntil(e.target, 'e-gridheader'));\n if (_this.groupSettings.allowReordering && preventDrop) {\n remove(e.helper);\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n _this.rearrangeGroup();\n }\n else if (!(parentsUntil(e.target, 'e-grid'))) {\n var field = _this.parent.getColumnByUid(e.helper.getAttribute('e-mappinguid')).field;\n if (_this.groupSettings.columns.indexOf(field) !== -1) {\n _this.ungroupColumn(field);\n }\n }\n return;\n }\n else if (preventDrop) {\n remove(e.helper);\n return;\n }\n };\n this.animateDropper = function (e) {\n var uid = _this.parent.element.querySelector('.e-cloneproperties').getAttribute('e-mappinguid');\n var dragField = _this.parent.getColumnByUid(uid).field;\n var parent = parentsUntil(e.target, 'e-groupdroparea');\n var dropTarget = parentsUntil(e.target, 'e-group-animator');\n var grouped = [].slice.call(_this.element.getElementsByClassName('e-groupheadercell'))\n .map(function (e) { return e.querySelector('div').getAttribute('ej-mappingname'); });\n var cols = JSON.parse(JSON.stringify(grouped));\n if (dropTarget || parent) {\n if (dropTarget) {\n var dropField = dropTarget.querySelector('div[ej-mappingname]').getAttribute('ej-mappingname');\n var dropIndex = +(dropTarget.getAttribute('index'));\n if (dropField !== dragField) {\n var dragIndex = cols.indexOf(dragField);\n if (dragIndex !== -1) {\n cols.splice(dragIndex, 1);\n }\n var flag = dropIndex !== -1 && dragIndex === dropIndex;\n cols.splice(dropIndex + (flag ? 1 : 0), 0, dragField);\n }\n }\n else if (parent && cols.indexOf(dragField) === -1) {\n cols.push(dragField);\n }\n _this.element.innerHTML = '';\n if (cols.length && !_this.element.classList.contains('e-grouped')) {\n _this.element.classList.add('e-grouped');\n }\n _this.reorderingColumns = cols;\n for (var c = 0; c < cols.length; c++) {\n _this.addColToGroupDrop(cols[parseInt(c.toString(), 10)]);\n }\n }\n else {\n _this.addLabel();\n _this.removeColFromGroupDrop(dragField);\n }\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n _this.element.classList.remove('e-hover');\n remove(e.droppedElement);\n _this.aria.setDropTarget(_this.parent.element.querySelector('.e-groupdroparea'), false);\n _this.aria.setGrabbed(_this.parent.getHeaderTable().querySelector('[aria-grabbed=true]'), false);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n _this.parent.log('action_disabled_column', { moduleName: _this.getModuleName(), columnName: column.headerText });\n return;\n }\n _this.groupColumn(column.field);\n };\n this.contentRefresh = true;\n this.aria = new AriaService();\n this.parent = parent;\n this.groupSettings = groupSettings;\n this.serviceLocator = serviceLocator;\n this.sortedColumns = sortedColumns;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n this.groupGenerator = new GroupModelGenerator(this.parent);\n }\n Group.prototype.addLabel = function () {\n if (!this.element.getElementsByClassName('e-group-animator').length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n };\n Group.prototype.rearrangeGroup = function () {\n this.sortRequired = false;\n this.updateModel();\n };\n Group.prototype.columnDrag = function (e) {\n if (this.groupSettings.allowReordering && e.column.allowGrouping) {\n this.animateDropper(e);\n }\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!parentsUntil(e.target, 'e-groupdroparea') &&\n !(this.parent.allowReordering && parentsUntil(e.target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n if (e.target.classList.contains('e-groupdroparea')) {\n this.element.classList.add('e-hover');\n }\n else {\n this.element.classList.remove('e-hover');\n }\n };\n Group.prototype.columnDragStart = function (e) {\n if (e.target.classList.contains('e-stackedheadercell')) {\n return;\n }\n var dropArea = this.parent.element.querySelector('.e-groupdroparea');\n this.aria.setDropTarget(dropArea, e.column.allowGrouping);\n var element = e.target.classList.contains('e-headercell') ? e.target : parentsUntil(e.target, 'e-headercell');\n this.aria.setGrabbed(element, true, !e.column.allowGrouping);\n };\n Group.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') === 'grouping') {\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n return;\n }\n this.ungroupColumn(column.field);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Group.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.groupComplete, this.onActionComplete, this);\n this.parent.on(events.ungroupComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.columnDrag, this.columnDrag, this);\n this.parent.on(events.columnDragStart, this.columnDragStart, this);\n this.parent.on(events.headerDrop, this.columnDrop, this);\n this.parent.on(events.columnDrop, this.columnDrop, this);\n this.parent.on(events.headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(events.sortComplete, this.refreshSortIcons, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.groupAggregates, this.onGroupAggregates, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on('group-expand-collapse', this.updateExpand, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Group.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.groupComplete, this.onActionComplete);\n this.parent.off(events.ungroupComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.columnDrag, this.columnDrag);\n this.parent.off(events.columnDragStart, this.columnDragStart);\n this.parent.off(events.columnDrop, this.columnDrop);\n this.parent.off(events.headerDrop, this.columnDrop);\n this.parent.off(events.headerRefreshed, this.refreshSortIcons);\n this.parent.off(events.sortComplete, this.refreshSortIcons);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.groupAggregates, this.onGroupAggregates);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off('group-expand-collapse', this.updateExpand);\n };\n Group.prototype.initialEnd = function () {\n var gObj = this.parent;\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.onEmpty, this.initialEnd);\n if (this.parent.getColumns().length && this.groupSettings.columns.length) {\n this.contentRefresh = false;\n for (var _i = 0, _a = gObj.groupSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.groupColumn(col);\n }\n this.contentRefresh = true;\n }\n };\n Group.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.target && parentsUntil(e.target, 'e-groupheadercell') && (e.action === 'tab' || e.action === 'shiftTab')) {\n var focusableGroupedItems = this.getFocusableGroupedItems();\n if ((e.action === 'tab' && e.target === focusableGroupedItems[focusableGroupedItems.length - 1])\n || (e.action === 'shiftTab' && e.target === focusableGroupedItems[0])) {\n return;\n }\n for (var i = 0; i < focusableGroupedItems.length; i++) {\n if (e.target === focusableGroupedItems[parseInt(i.toString(), 10)]) {\n e.preventDefault();\n var index = e.action === 'tab' ? i + 1 : i - 1;\n focusableGroupedItems[parseInt(index.toString(), 10)].focus();\n return;\n }\n }\n }\n if (e.action !== 'ctrlSpace' && (!this.groupSettings.columns.length ||\n ['altDownArrow', 'altUpArrow', 'ctrlDownArrow', 'ctrlUpArrow', 'enter'].indexOf(e.action) === -1)) {\n return;\n }\n e.preventDefault();\n switch (e.action) {\n case 'altDownArrow':\n case 'altUpArrow':\n // eslint-disable-next-line no-case-declarations\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var rows = gObj.getContentTable().querySelector(literals.tbody).children;\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var grpRow = void 0;\n for (var i = dataRow.rowIndex; i >= 0; i--) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains(literals.row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-detailrow')) {\n grpRow = rows[parseInt(i.toString(), 10)];\n break;\n }\n }\n this.expandCollapseRows(grpRow.querySelector(e.action === 'altUpArrow' ?\n '.e-recordplusexpand' : '.e-recordpluscollapse'));\n }\n break;\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'enter':\n if (e.target.classList.contains('e-groupsort')) {\n this.groupSortFocus = true;\n this.applySortFromTarget(e.target);\n break;\n }\n else if (e.target.classList.contains('e-ungroupbutton')) {\n this.groupCancelFocus = true;\n this.unGroupFromTarget(e.target);\n break;\n }\n if (this.parent.isEdit || (closest(e.target, '#' + this.parent.element.id + '_searchbar') !== null) ||\n parentsUntil(e.target, 'e-pager') || parentsUntil(e.target, 'e-toolbar')) {\n return;\n }\n // eslint-disable-next-line no-case-declarations\n var element = this.focus.getFocusedElement();\n if (element && (element.classList.contains('e-icon-grightarrow') || element.classList.contains('e-icon-gdownarrow'))) {\n element = element.parentElement;\n }\n // eslint-disable-next-line no-case-declarations\n var row = element ? element.parentElement.querySelector('[class^=\"e-record\"]') : null;\n if (!row) {\n break;\n }\n if (element.children.length && (element.children[0].classList.contains('e-icon-grightarrow') ||\n element.children[0].classList.contains('e-icon-gdownarrow'))) {\n this.expandCollapseRows(row);\n }\n break;\n case 'ctrlSpace':\n // eslint-disable-next-line no-case-declarations\n var elem = gObj.focusModule.currentInfo.element;\n if (elem && elem.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(elem.firstElementChild.getAttribute('e-mappinguid'));\n if (column.field && gObj.groupSettings.columns.indexOf(column.field) < 0) {\n this.groupColumn(column.field);\n }\n else {\n this.ungroupColumn(column.field);\n }\n }\n break;\n }\n };\n /**\n * @returns {Element[]} - Return the focusable grouping items\n * @hidden */\n Group.prototype.getFocusableGroupedItems = function () {\n var focusableGroupedItems = [];\n if (this.groupSettings.columns.length) {\n var focusableGroupedHeaderItems = this.element.querySelectorAll('.e-groupheadercell');\n for (var i = 0; i < focusableGroupedHeaderItems.length; i++) {\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-grouptext'));\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-groupsort'));\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-ungroupbutton'));\n }\n }\n return focusableGroupedItems;\n };\n Group.prototype.wireEvent = function () {\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n };\n Group.prototype.unWireEvent = function () {\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n };\n Group.prototype.onFocusIn = function (e) {\n if (this.parent.focusModule.currentInfo && this.parent.focusModule.currentInfo.element) {\n removeClass([this.parent.focusModule.currentInfo.element, this.parent.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.parent.focusModule.currentInfo.element.tabIndex = -1;\n }\n this.addOrRemoveFocus(e);\n };\n Group.prototype.onFocusOut = function (e) {\n this.addOrRemoveFocus(e);\n };\n Group.prototype.addOrRemoveFocus = function (e) {\n if (e.target.classList.contains('e-groupdroparea') || e.target.classList.contains('e-grouptext')\n || e.target.classList.contains('e-groupsort')\n || e.target.classList.contains('e-ungroupbutton')) {\n var target = e.target.classList.contains('e-grouptext') ?\n e.target.parentElement.parentElement : e.target;\n if (e.type === 'focusin') {\n this.parent.focusModule.currentInfo.element = e.target;\n this.parent.focusModule.currentInfo.elementToFocus = e.target;\n addClass([target], ['e-focused', 'e-focus']);\n e.target.tabIndex = 0;\n }\n else {\n removeClass([target], ['e-focused', 'e-focus']);\n e.target.tabIndex = -1;\n }\n }\n };\n Group.prototype.clickHandler = function (e) {\n if (e.target.classList.contains('e-grouptext')) {\n this.groupTextFocus = true;\n }\n if (e.target.classList.contains('e-groupsort')) {\n this.groupSortFocus = true;\n }\n if (e.target.classList.contains('e-ungroupbutton')) {\n this.groupCancelFocus = true;\n }\n var trgtEle = parentsUntil(e.target, 'e-recordplusexpand') ||\n parentsUntil(e.target, 'e-recordpluscollapse');\n if (trgtEle && (trgtEle.children[0].classList.contains('e-icon-gdownarrow') || trgtEle.children[0].classList.contains('e-icon-grightarrow'))) {\n this.expandCollapseRows(e.target);\n }\n this.applySortFromTarget(e.target);\n this.unGroupFromTarget(e.target);\n this.toogleGroupFromHeader(e.target);\n };\n Group.prototype.unGroupFromTarget = function (target) {\n if (target.classList.contains('e-ungroupbutton')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n };\n Group.prototype.toogleGroupFromHeader = function (target) {\n if (this.groupSettings.showToggleButton) {\n if (target.classList.contains('e-grptogglebtn')) {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n else {\n this.groupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n }\n else {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n }\n }\n };\n Group.prototype.applySortFromTarget = function (target) {\n var gObj = this.parent;\n var gHeader = closest(target, '.e-groupheadercell');\n if (gObj.allowSorting && gHeader && !target.classList.contains('e-ungroupbutton') &&\n !target.classList.contains('e-toggleungroup')) {\n var field = gHeader.firstElementChild.getAttribute('ej-mappingname');\n if (gObj.getColumnHeaderByField(field).getElementsByClassName('e-ascending').length) {\n gObj.sortColumn(field, 'Descending', true);\n }\n else {\n gObj.sortColumn(field, 'Ascending', true);\n }\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n Group.prototype.expandCollapseRows = function (target) {\n var trgt = parentsUntil(target, 'e-recordplusexpand') ||\n parentsUntil(target, 'e-recordpluscollapse');\n if (trgt) {\n var rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var isHide = void 0;\n var dataManager = void 0;\n var query = void 0;\n var gObj = this.parent;\n var indent = trgt.parentElement.getElementsByClassName('e-indentcell').length;\n var uid = trgt.parentElement.getAttribute('data-uid');\n var captionRow = gObj.getRowObjectFromUID(uid);\n var expand = false;\n if (trgt.classList.contains('e-recordpluscollapse')) {\n addClass([trgt], 'e-recordplusexpand');\n removeClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n trgt.firstElementChild.setAttribute('title', 'expanded');\n expand = true;\n captionRow.isExpand = true;\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, expand, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n if ((this.parent.filterSettings.columns.length || this.parent.sortSettings.columns.length ||\n this.parent.searchSettings.key.length) && this.parent.getContent().firstElementChild.scrollTop === 0) {\n this.parent.contentModule.isTop = true;\n }\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).captionExpand(trgt.parentElement);\n }\n }\n else {\n isHide = true;\n captionRow.isExpand = false;\n removeClass([trgt], 'e-recordplusexpand');\n addClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n trgt.firstElementChild.setAttribute('title', 'collapsed');\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, !isHide, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).captionCollapse(trgt.parentElement);\n }\n }\n this.aria.setExpand(trgt, expand);\n if (!isGroupAdaptive(gObj) && !this.parent.groupSettings.enableLazyLoading) {\n var rowObjs = gObj.getRowsObject();\n var startIdx = rowObjs.indexOf(captionRow);\n var rowsState = {};\n var cacheStartIdx = gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings &&\n gObj.infiniteScrollSettings.enableCache && rowObjs.length !== rowNodes.length ?\n Array.from(rowNodes).indexOf(trgt.parentElement) : undefined;\n for (var i = startIdx; i < rowObjs.length; i++) {\n if (i > startIdx && rowObjs[parseInt(i.toString(), 10)].indent === indent) {\n break;\n }\n if (rowObjs[parseInt(i.toString(), 10)].isDetailRow) {\n var visible = rowObjs[i - 1].isExpand && rowObjs[i - 1].visible;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = visible ? '' : 'none';\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = visible ? '' : 'none';\n }\n }\n else if (rowsState[rowObjs[parseInt(i.toString(), 10)].parentUid] === false) {\n rowObjs[parseInt(i.toString(), 10)].visible = false;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = 'none';\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = 'none';\n }\n }\n else {\n if (!(rowObjs[parseInt(i.toString(), 10)].isDataRow || rowObjs[parseInt(i.toString(), 10)].isCaptionRow\n || rowObjs[parseInt(i.toString(), 10)].isDetailRow || rowObjs[parseInt(i.toString(), 10)].isAggregateRow)) {\n var visible = rowObjs[parseInt(i.toString(), 10)].cells\n .some(function (cell) { return cell.isDataCell && cell.visible; });\n if (visible === rowObjs[parseInt(i.toString(), 10)].visible) {\n continue;\n }\n }\n rowObjs[parseInt(i.toString(), 10)].visible = true;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = '';\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].classList.remove('e-hide');\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = '';\n rowNodes[parseInt(i.toString(), 10)].classList.remove('e-hide');\n }\n }\n if (rowObjs[parseInt(i.toString(), 10)].isCaptionRow) {\n rowsState[rowObjs[parseInt(i.toString(), 10)].uid] = rowObjs[parseInt(i.toString(), 10)].isExpand\n && rowObjs[parseInt(i.toString(), 10)].visible;\n }\n if (!isNullOrUndefined(cacheStartIdx)) {\n cacheStartIdx++;\n }\n }\n this.lastCaptionRowBorder();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n if (!this.parent.enableInfiniteScrolling || !this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.captionActionComplete, { isCollapse: isHide, parentUid: uid });\n }\n }\n };\n Group.prototype.lastCaptionRowBorder = function () {\n var table = this.parent.getContentTable();\n var clientHeight = this.parent.getContent().clientHeight;\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n if (table.scrollHeight < clientHeight || this.isAppliedCaptionRowBorder) {\n if (this.isAppliedCaptionRowBorder) {\n var borderCells = table.querySelectorAll('.e-lastrowcell');\n for (var i = 0, len = borderCells.length; i < len; i++) {\n removeClass([borderCells[parseInt(i.toString(), 10)]], 'e-lastrowcell');\n }\n this.isAppliedCaptionRowBorder = false;\n }\n var rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var lastRow = rowNodes[rowNodes.length - 1];\n if (lastRow.style.display !== 'none' && !lastRow.classList.contains('e-groupcaptionrow')) {\n if (table.scrollHeight < clientHeight) {\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n this.isAppliedCaptionRowBorder = true;\n }\n }\n else {\n for (var i = rowNodes.length - 1, len = 0; i > len; i--) {\n if (rowNodes[parseInt(i.toString(), 10)].style.display !== 'none'\n && rowNodes[parseInt(i.toString(), 10)].classList.contains('e-groupcaptionrow')) {\n if (rowNodes[parseInt(i.toString(), 10)].querySelector('.e-recordpluscollapse')) {\n addClass(rowNodes[parseInt(i.toString(), 10)].childNodes, 'e-lastrowcell');\n this.isAppliedCaptionRowBorder = true;\n break;\n }\n }\n }\n }\n }\n }\n };\n Group.prototype.updateVirtualRows = function (gObj, target, isExpand, query, dataManager) {\n var rObj = gObj.getRowObjectFromUID(target.closest('tr').getAttribute('data-uid'));\n rObj.isExpand = isExpand;\n updatecloneRow(gObj);\n this.parent.notify(events.refreshVirtualMaxPage, {});\n query = gObj.getDataModule().generateQuery(false);\n query.queries = gObj.getDataModule().aggregateQuery(gObj.getQuery().clone()).queries;\n var args = { requestType: 'virtualscroll', rowObject: rObj };\n if (gObj.contentModule) {\n args.virtualInfo = gObj.contentModule.prevInfo;\n }\n dataManager = gObj.getDataModule().getData(args, query.requiresCount());\n dataManager.then(function (e) { return gObj.renderModule.dataManagerSuccess(e, args); });\n };\n Group.prototype.expandCollapse = function (isExpand) {\n if (!this.parent.groupSettings.columns.length) {\n return;\n }\n if (!isExpand) {\n this.parent.notify(events.initialCollapse, isExpand);\n }\n var rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var rowObjs = this.parent.getRowsObject();\n var row;\n for (var i = 0, len = rowNodes.length; i < len; i++) {\n if (rowNodes[parseInt(i.toString(), 10)].querySelectorAll('.e-recordplusexpand, .e-recordpluscollapse').length) {\n row = rowNodes[parseInt(i.toString(), 10)].querySelector(isExpand ? '.e-recordpluscollapse' : '.e-recordplusexpand');\n if (row) {\n if (isExpand) {\n row.className = 'e-recordplusexpand';\n row.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n row.setAttribute('aria-expanded', 'true');\n row.firstElementChild.setAttribute('title', 'expanded');\n }\n else {\n row.className = 'e-recordpluscollapse';\n row.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n row.setAttribute('aria-expanded', 'false');\n row.firstElementChild.setAttribute('title', 'collapsed');\n }\n }\n if (!(rowNodes[parseInt(i.toString(), 10)].firstElementChild.classList.contains('e-recordplusexpand') ||\n rowNodes[parseInt(i.toString(), 10)].firstElementChild.classList.contains('e-recordpluscollapse'))) {\n rowNodes[parseInt(i.toString(), 10)].style.display = isExpand ? '' : 'none';\n }\n }\n else {\n rowNodes[parseInt(i.toString(), 10)].style.display = isExpand ? '' : 'none';\n }\n if (rowObjs[parseInt(i.toString(), 10)].isCaptionRow) {\n rowObjs[parseInt(i.toString(), 10)].isExpand = isExpand ? true : false;\n }\n }\n this.parent.updateVisibleExpandCollapseRows();\n this.lastCaptionRowBorder();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.expandAll = function () {\n this.expandCollapse(true);\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.collapseAll = function () {\n this.expandCollapse(false);\n };\n /**\n * The function is used to render grouping\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderGroupDropArea();\n this.initDragAndDrop();\n this.refreshToggleBtn();\n this.wireEvent();\n };\n Group.prototype.renderGroupDropArea = function () {\n var groupElem = this.parent.element.querySelector('.e-groupdroparea');\n if (groupElem) {\n remove(groupElem);\n }\n this.element = this.parent.createElement('div', { className: 'e-groupdroparea', attrs: { 'tabindex': '-1' } });\n if (this.groupSettings.allowReordering) {\n this.element.classList.add('e-group-animate');\n }\n this.updateGroupDropArea();\n this.parent.element.insertBefore(this.element, this.parent.element.firstChild);\n if (!this.groupSettings.showDropArea) {\n this.element.style.display = 'none';\n }\n };\n Group.prototype.updateGroupDropArea = function (clear) {\n if (this.groupSettings.showDropArea && !this.groupSettings.columns.length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n else {\n if ((this.element.innerHTML === this.l10n.getConstant('GroupDropArea') && (this.groupSettings.columns.length === 1\n || !this.isAppliedGroup && !this.isAppliedUnGroup)) || clear) {\n this.element.innerHTML = '';\n }\n this.element.classList.add('e-grouped');\n }\n };\n Group.prototype.initDragAndDrop = function () {\n this.initializeGHeaderDrop();\n this.initializeGHeaderDrag();\n };\n Group.prototype.initializeGHeaderDrag = function () {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drag = new Draggable(this.element, {\n dragTarget: this.groupSettings.allowReordering ? '.e-drag' : '.e-groupheadercell',\n distance: this.groupSettings.allowReordering ? -10 : 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop\n });\n };\n Group.prototype.initializeGHeaderDrop = function () {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drop = new Droppable(this.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n * @returns {void}\n */\n Group.prototype.groupColumn = function (columnName) {\n var gObj = this.parent;\n var column = gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n (this.contentRefresh && this.groupSettings.columns.indexOf(columnName) > -1)) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.groupColumn, arg1: columnName });\n return;\n }\n column.visible = gObj.groupSettings.showGroupedColumn;\n this.colName = columnName;\n this.isAppliedGroup = true;\n if (this.contentRefresh) {\n this.updateModel();\n }\n else {\n this.addColToGroupDrop(columnName);\n }\n this.updateGroupDropArea();\n this.isAppliedGroup = false;\n };\n /**\n * Ungroups a column by column name.\n *\n * @param {string} columnName - Defines the column name to ungroup.\n * @returns {void}\n */\n Group.prototype.ungroupColumn = function (columnName) {\n var gObj = this.parent;\n var column = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (c) { return c.field === columnName; })[0] : gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false || this.groupSettings.columns.indexOf(columnName) < 0) {\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.ungroupColumn, arg1: columnName });\n return;\n }\n column.visible = true;\n this.colName = column.field;\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns.splice(columns.indexOf(this.colName), 1);\n if (this.sortedColumns.indexOf(columnName) < 0) {\n for (var i = 0, len = gObj.sortSettings.columns.length; i < len; i++) {\n if (columnName === gObj.sortSettings.columns[parseInt(i.toString(), 10)].field) {\n gObj.sortSettings.columns.splice(i, 1);\n break;\n }\n }\n }\n if (this.groupSettings.allowReordering) {\n this.reorderingColumns = columns;\n }\n this.groupSettings.columns = columns;\n if (gObj.allowGrouping) {\n this.isAppliedUnGroup = true;\n this.parent.dataBind();\n }\n };\n /**\n * The function used to update groupSettings\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.updateModel = function () {\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns = this.reorderingColumns.length ? JSON.parse(JSON.stringify(this.reorderingColumns)) : columns;\n if (this.sortRequired) {\n if (columns.indexOf(this.colName) === -1) {\n columns.push(this.colName);\n }\n this.groupAddSortingQuery(this.colName);\n }\n this.sortRequired = true;\n this.parent.groupSettings.columns = columns;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Group.prototype.onActionComplete = function (e) {\n if (e.requestType === 'grouping') {\n this.addColToGroupDrop(this.colName);\n }\n else {\n this.removeColFromGroupDrop(this.colName);\n }\n var args = this.groupSettings.columns.indexOf(this.colName) > -1 ? {\n columnName: this.colName, requestType: 'grouping', type: events.actionComplete\n } : { requestType: 'ungrouping', type: events.actionComplete };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.colName = null;\n };\n Group.prototype.groupAddSortingQuery = function (colName) {\n var i = 0;\n while (i < this.parent.sortSettings.columns.length) {\n if (this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field === colName) {\n break;\n }\n i++;\n }\n if (this.parent.sortSettings.columns.length === i) {\n this.parent.sortSettings.columns.push({ field: colName, direction: 'Ascending', isFromGroup: true });\n }\n else if (!this.parent.allowSorting) {\n this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction = 'Ascending';\n }\n };\n Group.prototype.createElement = function (field) {\n var gObj = this.parent;\n var direction = 'Ascending';\n var animator = this.parent.createElement('div', { className: 'e-grid-icon e-group-animator' });\n var groupedColumn = this.parent.createElement('div', { className: 'e-grid-icon e-groupheadercell' });\n var childDiv = this.parent.createElement('div', { attrs: { 'ej-mappingname': field } });\n if (isComplexField(field)) {\n childDiv.setAttribute('ej-complexname', getComplexFieldID(field));\n }\n var column = this.parent.getColumnByField(field);\n //Todo headerTemplateID for grouped column, disableHtmlEncode\n var headerCell = gObj.getColumnHeaderByUid(column.uid);\n // if (!isNullOrUndefined(column.headerTemplate)) {\n // if (column.headerTemplate.indexOf('#') !== -1) {\n // childDiv.innerHTML = document.querySelector(column.headerTemplate).innerHTML.trim();\n // } else {\n // childDiv.innerHTML = column.headerTemplate;\n // }\n // childDiv.firstElementChild.classList.add('e-grouptext');\n // } else {\n if (this.groupSettings.allowReordering) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-drag e-icons e-icon-drag', innerHTML: ' ',\n attrs: { title: 'Drag', tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedDrag') }\n }));\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-grouptext', innerHTML: column.headerText,\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedSortIcon') + column.headerText }\n }));\n // }\n if (this.groupSettings.showToggleButton) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-togglegroupbutton e-icons e-icon-ungroup e-toggleungroup', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('UnGroupAria') }\n }));\n }\n if (headerCell.querySelectorAll('.e-ascending,.e-descending').length) {\n direction = headerCell.querySelector('.e-ascending') ? 'Ascending' : 'Descending';\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-groupsort e-icons ' +\n ('e-' + direction.toLowerCase() + ' e-icon-' + direction.toLowerCase()), innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedSortIcon') + column.headerText, role: 'button' }\n }));\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-ungroupbutton e-icons e-icon-hide', innerHTML: ' ',\n attrs: { title: this.l10n.getConstant('UnGroup'),\n tabindex: '-1', 'aria-label': this.l10n.getConstant('UnGroupIcon') + column.headerText, role: 'button' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n }));\n groupedColumn.appendChild(childDiv);\n if (this.groupSettings.allowReordering) {\n animator.appendChild(groupedColumn);\n animator.appendChild(this.createSeparator());\n groupedColumn = animator;\n }\n return groupedColumn;\n };\n Group.prototype.addColToGroupDrop = function (field) {\n var groupElem = isComplexField(field) ? this.parent.element.querySelector('.e-groupdroparea div[ej-complexname=' +\n getComplexFieldID(field) + ']') : this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + field + ']');\n if (this.groupSettings.allowReordering && groupElem) {\n return;\n }\n var column = this.parent.getColumnByField(field);\n if (isNullOrUndefined(column)) {\n return;\n }\n var groupedColumn = this.createElement(field);\n if (this.groupSettings.allowReordering) {\n var index = this.element.getElementsByClassName('e-group-animator').length;\n groupedColumn.setAttribute('index', index.toString());\n }\n this.element.appendChild(groupedColumn);\n var focusModule = this.parent.focusModule;\n focusModule.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (focusModule.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(focusModule.active.matrix.matrix, firstContentCellIndex, true);\n }\n focusModule.active.matrix.current = firstContentCellIndex;\n focusModule.active.getTable().rows[focusModule.active.matrix.current[0]].cells[focusModule.active.matrix.current[1]].focus();\n //Todo: rtl\n };\n Group.prototype.createSeparator = function () {\n return this.parent.createElement('span', {\n className: 'e-nextgroup e-icons e-icon-next', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupSeperator') },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n });\n };\n Group.prototype.refreshToggleBtn = function (isRemove) {\n if (this.groupSettings.showToggleButton) {\n var headers = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-headercelldiv'));\n for (var i = 0, len = headers.length; i < len; i++) {\n if (!((headers[parseInt(i.toString(), 10)].classList.contains('e-emptycell')) || (headers[parseInt(i.toString(), 10)].classList.contains('e-headerchkcelldiv')))) {\n var column = this.parent.getColumnByUid(headers[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (!this.parent.showColumnMenu || (this.parent.showColumnMenu && !column.showColumnMenu)) {\n if (headers[parseInt(i.toString(), 10)].getElementsByClassName('e-grptogglebtn').length) {\n remove(headers[parseInt(i.toString(), 10)].querySelectorAll('.e-grptogglebtn')[0]);\n }\n if (!isRemove) {\n headers[parseInt(i.toString(), 10)].appendChild(this.parent.createElement('span', {\n className: 'e-grptogglebtn e-icons ' + (this.groupSettings.columns.indexOf(column.field) > -1 ?\n 'e-toggleungroup e-icon-ungroup' : 'e-togglegroup e-icon-group'), attrs: { tabindex: '-1',\n 'aria-label': isNullOrUndefined(this.l10n) ? this.parent.localeObj.getConstant('GroupButton')\n : this.l10n.getConstant('GroupButton') }\n }));\n }\n }\n }\n }\n }\n };\n Group.prototype.removeColFromGroupDrop = function (field) {\n if (!isNullOrUndefined(this.getGHeaderCell(field))) {\n var elem = this.getGHeaderCell(field);\n if (this.groupSettings.allowReordering) {\n var parent_1 = parentsUntil(elem, 'e-group-animator');\n remove(parent_1);\n }\n else {\n remove(elem);\n }\n this.updateGroupDropArea();\n }\n this.isAppliedUnGroup = false;\n };\n Group.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var args = void 0;\n if (this.contentRefresh) {\n if (!this.isAppliedUnGroup) {\n if (!this.isAppliedGroup) {\n this.updateGroupDropArea(true);\n for (var j = 0; j < this.parent.sortSettings.columns.length; j++) {\n if (this.parent.sortSettings.columns[parseInt(j.toString(), 10)].isFromGroup) {\n this.parent.sortSettings.columns.splice(j, 1);\n j--;\n }\n }\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.colName = this.groupSettings.columns[parseInt(i.toString(), 10)];\n var col = this.parent.getColumnByField(this.colName);\n col.visible = this.parent.groupSettings.showGroupedColumn;\n this.groupAddSortingQuery(this.colName);\n if (i < this.groupSettings.columns.length - 1) {\n this.addColToGroupDrop(this.groupSettings.columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n args = {\n columnName: this.colName, requestType: e.properties[\"\" + prop].length ? 'grouping' : 'ungrouping',\n type: events.actionBegin\n };\n }\n else {\n args = { columnName: this.colName, requestType: 'ungrouping', type: events.actionBegin };\n }\n if (!this.groupSettings.showGroupedColumn) {\n var columns = e.oldProperties[\"\" + prop];\n for (var i = 0; i < columns.length; i++) {\n if (e.properties[\"\" + prop].indexOf(columns[parseInt(i.toString(), 10)]) === -1) {\n this.parent.getColumnByField(columns[parseInt(i.toString(), 10)]).visible = true;\n }\n }\n }\n this.parent.notify(events.modelChanged, args);\n }\n break;\n case 'showDropArea':\n this.updateGroupDropArea();\n if (this.groupSettings.showDropArea) {\n this.element.style.display = '';\n this.parent.headerModule.refreshUI();\n }\n else {\n this.element.style.display = 'none';\n }\n break;\n case 'showGroupedColumn':\n this.updateGroupedColumn(this.groupSettings.showGroupedColumn);\n this.parent.notify(events.modelChanged, { requestType: 'refresh' });\n break;\n case 'showUngroupButton':\n this.updateButtonVisibility(this.groupSettings.showUngroupButton, 'e-ungroupbutton');\n break;\n case 'showToggleButton':\n this.updateButtonVisibility(this.groupSettings.showToggleButton, 'e-togglegroupbutton ');\n this.parent.refreshHeader();\n break;\n case 'enableLazyLoading':\n this.parent.freezeRefresh();\n break;\n }\n }\n };\n Group.prototype.updateGroupedColumn = function (isVisible) {\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.parent.getColumnByField(this.groupSettings.columns[parseInt(i.toString(), 10)]).visible = isVisible;\n }\n };\n Group.prototype.updateButtonVisibility = function (isVisible, className) {\n var gHeader = [].slice.call(this.element.getElementsByClassName(className));\n for (var i = 0; i < gHeader.length; i++) {\n gHeader[parseInt(i.toString(), 10)].style.display = isVisible ? '' : 'none';\n }\n };\n Group.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.parent.isDestroyed || !this.parent.allowGrouping) && !this.parent.refreshing) {\n this.clearGrouping();\n }\n this.unWireEvent();\n this.removeEventListener();\n this.refreshToggleBtn(true);\n if (this.element.parentNode) {\n remove(this.element);\n }\n //call ejdrag and drop destroy\n };\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.clearGrouping = function () {\n var cols = JSON.parse(JSON.stringify(this.groupSettings.columns));\n this.contentRefresh = false;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (i === (len - 1)) {\n this.contentRefresh = true;\n }\n this.ungroupColumn(cols[parseInt(i.toString(), 10)]);\n }\n this.contentRefresh = true;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Group.prototype.getModuleName = function () {\n return 'group';\n };\n Group.prototype.refreshSortIcons = function () {\n var gObj = this.parent;\n var header;\n var cols = gObj.sortSettings.columns;\n var gCols = gObj.groupSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n this.refreshToggleBtn();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (!gObj.allowSorting && (this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1 ||\n this.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1)) {\n classList(header.querySelector('.e-sortfilterdiv'), ['e-ascending', 'e-icon-ascending'], []);\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').appendChild(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }));\n }\n }\n else if (this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field) && this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).getElementsByClassName('e-groupsort').length) {\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).querySelector('.e-groupsort'), ['e-ascending', 'e-icon-ascending'], ['e-descending', 'e-icon-descending']);\n }\n else {\n classList(this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).querySelector('.e-groupsort'), ['e-descending', 'e-icon-descending'], ['e-ascending', 'e-icon-ascending']);\n }\n }\n }\n for (var i = 0, len = gCols.length; i < len; i++) {\n if (fieldNames.indexOf(gCols[parseInt(i.toString(), 10)]) === -1) {\n continue;\n }\n gObj.getColumnHeaderByField(gCols[parseInt(i.toString(), 10)]).setAttribute('aria-grouped', 'true');\n }\n };\n Group.prototype.getGHeaderCell = function (field) {\n if (this.element && this.element.querySelector('[ej-mappingname=\"' + field + '\"]')) {\n return this.element.querySelector('[ej-mappingname=\"' + field + '\"]').parentElement;\n }\n return null;\n };\n Group.prototype.onGroupAggregates = function (editedData) {\n if (this.parent.groupSettings.enableLazyLoading) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.updateLazyLoadGroupAggregates(editedData);\n }\n return;\n }\n var aggregates = this.iterateGroupAggregates(editedData);\n var rowData = this.groupGenerator.generateRows(aggregates, {});\n var summaryRows = this.parent.getRowsObject().filter(function (row) { return !row.isDataRow; });\n var updateSummaryRows = rowData.filter(function (data) { return !data.isDataRow; });\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.destroyTemplate(['groupFooterTemplate', 'groupCaptionTemplate', 'footerTemplate']);\n }\n for (var i = 0; i < updateSummaryRows.length; i++) {\n var row = updateSummaryRows[parseInt(i.toString(), 10)];\n var cells = row.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: row.data, dataUid: summaryRows[parseInt(i.toString(), 10)] ? summaryRows[parseInt(i.toString(), 10)].uid : '' };\n this.parent.notify(events.refreshAggregateCell, args);\n }\n };\n Group.prototype.updateLazyLoadGroupAggregates = function (data, remoteResult) {\n var _this = this;\n var groupCaptionTemplates = this.getGroupAggregateTemplates(true);\n var groupFooterTemplates = this.getGroupAggregateTemplates(false);\n if (!groupCaptionTemplates.length && !groupFooterTemplates.length) {\n return;\n }\n var gObj = this.parent;\n var isRemote = gObj.getDataModule().isRemote();\n var updatedData = data[0];\n var editedRow = data.row;\n var groupedCols = gObj.groupSettings.columns;\n var groupLazyLoadRenderer = gObj.contentModule;\n var groupCache = groupLazyLoadRenderer.getGroupCache();\n var currentPageGroupCache = groupCache[gObj.pageSettings.currentPage];\n var result = remoteResult ? remoteResult : [];\n var _loop_1 = function (i) {\n var groupField = groupedCols[parseInt(i.toString(), 10)];\n var groupKey = updatedData[\"\" + groupField];\n var groupCaptionRowObject = this_1.getGroupCaptionRowObject(editedRow, groupedCols.length - i);\n if (isRemote && result.length) {\n if (i !== 0) {\n var prevGroupField = groupedCols[i - 1];\n var prevGroupKey_1 = updatedData[\"\" + prevGroupField];\n result = result.find(function (data) {\n return data.key === prevGroupKey_1;\n }).items;\n }\n this_1.updateLazyLoadGroupAggregatesRow(result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates);\n }\n else {\n var query = gObj.renderModule.data.generateQuery();\n if (i !== 0) {\n var currentLevelCaptionRowObjects = currentPageGroupCache.filter(function (data) {\n return data.isCaptionRow && data.parentUid === groupCaptionRowObject.parentUid;\n });\n var index = currentLevelCaptionRowObjects.indexOf(groupCaptionRowObject);\n var fields = gObj.groupSettings.columns.slice(0, i).reverse();\n var keys = fields.map(function (data) {\n return updatedData[\"\" + data];\n });\n var pred = generateExpandPredicates(fields, keys, groupLazyLoadRenderer);\n var predicateList = getPredicates(pred);\n var lazyLoad = { level: i, skip: index, take: 1, where: predicateList };\n query.lazyLoad.push({ key: 'onDemandGroupInfo', value: lazyLoad });\n }\n gObj.renderModule.data.getData({}, query).then(function (e) {\n if (isRemote) {\n _this.updateLazyLoadGroupAggregates(data, e.result);\n }\n else {\n _this.updateLazyLoadGroupAggregatesRow(e.result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates);\n }\n if (i === groupedCols.length - 1 || isRemote) {\n _this.destroyRefreshGroupCaptionFooterTemplate();\n }\n }).catch(function (e) { return gObj.renderModule.dataManagerFailure(e, { requestType: 'grouping' }); });\n if (isRemote) {\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (var i = 0; i < groupedCols.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n };\n Group.prototype.destroyRefreshGroupCaptionFooterTemplate = function () {\n var gObj = this.parent;\n if (gObj.isAngular || gObj.isReact || gObj.isVue) {\n gObj.destroyTemplate(['groupCaptionTemplate', 'groupFooterTemplate']);\n }\n gObj.refreshGroupCaptionFooterTemplate();\n gObj.removeMaskRow();\n gObj.hideSpinner();\n };\n Group.prototype.updateLazyLoadGroupAggregatesRow = function (result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates) {\n var updatedGroupCaptionData = result.find(function (data) {\n return data.key === groupKey;\n });\n if (groupCaptionTemplates.length) {\n this.updateLazyLoadGroupAggregatesCell(updatedGroupCaptionData, groupCaptionRowObject, groupCaptionTemplates);\n }\n if (groupFooterTemplates.length) {\n var groupFooterRowObject = currentPageGroupCache.find(function (data) {\n return data.isAggregateRow && data.parentUid === groupCaptionRowObject.uid;\n });\n this.updateLazyLoadGroupAggregatesCell(updatedGroupCaptionData, groupFooterRowObject, groupFooterTemplates);\n }\n };\n Group.prototype.updateLazyLoadGroupAggregatesCell = function (updatedGroupCaptionData, captionFooterRowObject, captionFooterTemplates) {\n var prevCaptionFooterData = captionFooterRowObject.data;\n var updatedGroupCaptionDataAggregates = updatedGroupCaptionData.aggregates;\n if (captionFooterRowObject.isCaptionRow) {\n prevCaptionFooterData.aggregates = updatedGroupCaptionDataAggregates;\n }\n for (var i = 0; i < captionFooterTemplates.length; i++) {\n var template = captionFooterTemplates[parseInt(i.toString(), 10)];\n var key = template.field + ' - ' + template.type;\n var fieldData = prevCaptionFooterData[template.field];\n fieldData[\"\" + key] = updatedGroupCaptionDataAggregates[\"\" + key];\n fieldData[capitalizeFirstLetter(template.type)] = updatedGroupCaptionDataAggregates[\"\" + key];\n if (fieldData[template.type]) {\n fieldData[template.type] = updatedGroupCaptionDataAggregates[\"\" + key];\n }\n }\n };\n Group.prototype.getGroupCaptionRowObject = function (element, groupCaptionIndex) {\n var gObj = this.parent;\n var uid = element.getAttribute('data-uid');\n var parentCaptionRowObject = gObj.getRowObjectFromUID(uid);\n for (var i = 0; i < groupCaptionIndex; i++) {\n parentCaptionRowObject = gObj.getRowObjectFromUID(parentCaptionRowObject.parentUid);\n }\n return parentCaptionRowObject;\n };\n /**\n * @param { boolean } groupCaptionTemplate - Defines template either group caption or footer\n * @returns { Object[] } - Returns template array\n * @hidden\n */\n Group.prototype.getGroupAggregateTemplates = function (groupCaptionTemplate) {\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n if ((groupCaptionTemplate && row.columns[parseInt(k.toString(), 10)].groupCaptionTemplate)\n || (!groupCaptionTemplate && row.columns[parseInt(k.toString(), 10)].groupFooterTemplate)) {\n var aggr = {};\n var type = row.columns[parseInt(k.toString(), 10)].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[parseInt(k.toString(), 10)].field };\n aggregates.push(aggr);\n }\n }\n }\n return aggregates;\n };\n Group.prototype.iterateGroupAggregates = function (editedData) {\n var updatedData = editedData instanceof Array ? editedData : [];\n var rows = this.parent.getRowsObject();\n var initData = this.parent.getCurrentViewRecords();\n var deletedCols = [];\n var changeds = rows.map(function (row) {\n if (row.edit === 'delete') {\n deletedCols.push(row.data);\n }\n return row.changes instanceof Object ? row.changes : row.data;\n });\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n changeds = updatedData.length === 0 ? changeds : updatedData;\n var mergeData = initData.map(function (item) {\n var pKeyVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = changeds.some(function (cItem) {\n value = cItem;\n return pKeyVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n var eData = editedData;\n if (!(eData.type && eData.type === 'cancel') && deletedCols.length > 0) {\n for (var i = 0; i < deletedCols.length; i++) {\n var index = mergeData.indexOf(deletedCols[parseInt(i.toString(), 10)]);\n mergeData.splice(index, 1);\n }\n }\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var aggr = {};\n var type = row.columns[parseInt(k.toString(), 10)].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[parseInt(k.toString(), 10)].field };\n aggregates.push(aggr);\n }\n }\n var result;\n var aggrds;\n var groupedCols = this.parent.groupSettings.columns;\n for (var l = 0; l < groupedCols.length; l++) {\n aggrds = result ? result : mergeData;\n result = DataUtil.group(aggrds, groupedCols[parseInt(l.toString(), 10)], aggregates, null, null);\n }\n return result;\n };\n Group.prototype.updateExpand = function (args) {\n var uid = args.uid;\n var isExpand = args.isExpand;\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n if (row.uid === uid || isNullOrUndefined(uid)) {\n row.isExpand = isExpand;\n var _loop_2 = function (j) {\n var childRow = rows[parseInt(j.toString(), 10)];\n var closestParent = void 0;\n if (childRow.parentUid !== row.uid) {\n closestParent = rows.filter(function (x) { return x.uid === childRow.parentUid; })[0];\n }\n if (childRow.parentUid === row.uid) {\n childRow.visible = row.isExpand;\n }\n else if (!isNullOrUndefined(closestParent) && childRow.parentUid === closestParent.uid) {\n if (closestParent.isExpand && closestParent.visible === true) {\n childRow.visible = true;\n }\n else if (closestParent.isExpand && closestParent.visible === false) {\n childRow.visible = false;\n }\n }\n if (isNullOrUndefined(uid)) {\n return \"break\";\n }\n };\n for (var j = i + 1; j < rows.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n }\n }\n this.parent.notify(events.contentReady, { rows: rows, args: { isFrozen: false, rows: rows } });\n };\n return Group;\n}());\nexport { Group };\n","import { isNullOrUndefined, remove, extend } from '@syncfusion/ej2-base';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { FreezeRowModelGenerator } from '../services/freeze-row-model-generator';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport * as events from '../base/constant';\nimport { getScrollBarWidth, getEditedDataIndex, resetRowIndex, setRowElements, getRowIndexFromElement, getGroupKeysAndFields, getPredicates, generateExpandPredicates } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Infinite Scrolling class\n *\n * @hidden\n */\nvar InfiniteScroll = /** @class */ (function () {\n /**\n * Constructor for the Grid infinite scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n function InfiniteScroll(parent, serviceLocator) {\n this.infiniteCache = {};\n this.infiniteCurrentViewData = {};\n this.infiniteFrozenCache = {};\n this.isDownScroll = false;\n this.isUpScroll = false;\n this.isScroll = true;\n this.enableContinuousScroll = false;\n this.initialRender = true;\n this.isRemove = false;\n this.isInitialCollapse = false;\n this.prevScrollTop = 0;\n this.actions = ['filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'sorting', 'refresh'];\n this.keys = [literals.downArrow, literals.upArrow, literals.enter, literals.shiftEnter];\n this.rowTop = 0;\n this.isInitialMovableRender = true;\n this.virtualInfiniteData = {};\n this.isCancel = false;\n this.emptyRowData = {};\n this.isNormaledit = false;\n this.isInfiniteScroll = false;\n this.isLastPage = false;\n this.isInitialRender = true;\n this.isFocusScroll = false;\n this.isGroupCollapse = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.isNormaledit = this.parent.editSettings.mode === 'Normal';\n this.addEventListener();\n this.widthService = serviceLocator.getService('widthService');\n this.rowModelGenerator = this.parent.isFrozenGrid() ? new FreezeRowModelGenerator(this.parent)\n : new RowModelGenerator(this.parent);\n }\n InfiniteScroll.prototype.getModuleName = function () {\n return 'infiniteScroll';\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.addEventListener = function () {\n this.parent.on(events.dataReady, this.onDataReady, this);\n this.parent.on(events.dataSourceModified, this.dataSourceModified, this);\n this.parent.on(events.infinitePageQuery, this.infinitePageQuery, this);\n this.parent.on(events.infiniteScrollHandler, this.infiniteScrollHandler, this);\n this.parent.on(events.beforeCellFocused, this.infiniteCellFocus, this);\n this.parent.on(events.appendInfiniteContent, this.appendInfiniteRows, this);\n this.parent.on(events.removeInfiniteRows, this.removeInfiniteCacheRows, this);\n this.parent.on(events.resetInfiniteBlocks, this.resetInfiniteBlocks, this);\n this.parent.on(events.setInfiniteCache, this.setCache, this);\n this.parent.on(events.initialCollapse, this.ensureIntialCollapse, this);\n this.parent.on(events.keyPressed, this.infiniteCellFocus, this);\n this.parent.on(events.infiniteShowHide, this.setDisplayNone, this);\n this.parent.on(events.virtualScrollEditActionBegin, this.editActionBegin, this);\n this.parent.on(events.getVirtualData, this.getVirtualInfiniteData, this);\n this.parent.on(events.editReset, this.resetInfiniteEdit, this);\n this.parent.on(events.virtualScrollEditSuccess, this.infiniteEditSuccess, this);\n this.parent.on(events.refreshVirtualCache, this.refreshInfiniteCache, this);\n this.parent.on(events.refreshInfiniteEditrowindex, this.refreshInfiniteEditrowindex, this);\n this.parent.on(events.infiniteEditHandler, this.infiniteEditHandler, this);\n this.parent.on(events.virtualScrollAddActionBegin, this.infiniteAddActionBegin, this);\n this.parent.on(events.modelChanged, this.modelChanged, this);\n this.parent.on(events.refreshInfiniteCurrentViewData, this.refreshInfiniteCurrentViewData, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.contentReady, this.selectNewRow, this);\n this.parent.on(events.captionActionComplete, this.captionActionComplete, this);\n this.parent.on(events.setVirtualPageQuery, this.setGroupCollapsePageQuery, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.parent.on(events.deleteComplete, this.deleteComplate, this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dataReady, this.onDataReady);\n this.parent.off(events.dataSourceModified, this.dataSourceModified);\n this.parent.off(events.infinitePageQuery, this.infinitePageQuery);\n this.parent.off(events.infiniteScrollHandler, this.infiniteScrollHandler);\n this.parent.off(events.beforeCellFocused, this.infiniteCellFocus);\n this.parent.off(events.appendInfiniteContent, this.appendInfiniteRows);\n this.parent.off(events.removeInfiniteRows, this.removeInfiniteCacheRows);\n this.parent.off(events.resetInfiniteBlocks, this.resetInfiniteBlocks);\n this.parent.off(events.setInfiniteCache, this.setCache);\n this.parent.off(events.initialCollapse, this.ensureIntialCollapse);\n this.parent.off(events.keyPressed, this.infiniteCellFocus);\n this.parent.off(events.infiniteShowHide, this.setDisplayNone);\n this.parent.off(events.virtualScrollEditActionBegin, this.editActionBegin);\n this.parent.off(events.getVirtualData, this.getVirtualInfiniteData);\n this.parent.off(events.editReset, this.resetInfiniteEdit);\n this.parent.off(events.virtualScrollEditSuccess, this.infiniteEditSuccess);\n this.parent.off(events.refreshVirtualCache, this.refreshInfiniteCache);\n this.parent.on(events.refreshInfiniteEditrowindex, this.refreshInfiniteEditrowindex);\n this.parent.off(events.infiniteEditHandler, this.infiniteEditHandler);\n this.parent.off(events.virtualScrollAddActionBegin, this.infiniteAddActionBegin);\n this.parent.off(events.modelChanged, this.modelChanged);\n this.parent.off(events.refreshInfiniteCurrentViewData, this.refreshInfiniteCurrentViewData);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.contentReady, this.selectNewRow);\n this.parent.off(events.captionActionComplete, this.captionActionComplete);\n this.parent.off(events.setVirtualPageQuery, this.setGroupCollapsePageQuery);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n };\n InfiniteScroll.prototype.dataBound = function () {\n if (this.groupCaptionAction === 'collapse') {\n this.groupCaptionAction = 'refresh';\n this.makeGroupCollapseRequest();\n }\n else if (this.groupCaptionAction === 'refresh') {\n this.parent.hideSpinner();\n this.groupCaptionAction = this.empty;\n }\n };\n InfiniteScroll.prototype.setGroupCollapsePageQuery = function (args) {\n var gObj = this.parent;\n if (!gObj.infiniteScrollSettings.enableCache && this.isGroupCollapse) {\n args.skipPage = true;\n this.isGroupCollapse = false;\n if (this.groupCaptionAction === 'collapse') {\n var captionRow = gObj.getRowObjectFromUID(this.parentCapUid);\n var rowObjs = gObj.getRowsObject();\n var childCount = 0;\n for (var i = rowObjs.length - 1; i >= 0; i--) {\n if (rowObjs[parseInt(i.toString(), 10)].indent === captionRow.indent) {\n break;\n }\n if (rowObjs[parseInt(i.toString(), 10)].isDataRow) {\n childCount++;\n }\n }\n var key = getGroupKeysAndFields(rowObjs.indexOf(captionRow), rowObjs);\n var pred = generateExpandPredicates(key.fields, key.keys, this);\n var predicateList = getPredicates(pred);\n pred = predicateList[predicateList.length - 1];\n for (var i = predicateList.length - 2; i >= 0; i--) {\n pred = pred.and(predicateList[parseInt(i.toString(), 10)]);\n }\n args.query.where(pred);\n args.query.skip(childCount);\n this.parentCapUid = this.empty;\n }\n else {\n var rows = gObj.getRows();\n var size = gObj.pageSettings.pageSize;\n var skip = getRowIndexFromElement(rows[rows.length - 1]) + 1;\n var additionalCnt = ((skip - (skip % size)) + size) - skip;\n if ((skip % size) === 0) {\n additionalCnt = 0;\n }\n args.query.skip(skip);\n args.query.take((gObj.infiniteScrollSettings.initialBlocks * gObj.pageSettings.pageSize) + additionalCnt);\n }\n }\n };\n InfiniteScroll.prototype.captionActionComplete = function (args) {\n var gObj = this.parent;\n if (!gObj.infiniteScrollSettings.enableCache && args.isCollapse) {\n var contetRect = gObj.getContent().firstElementChild.getBoundingClientRect();\n var tableReact = gObj.contentModule.getTable().getBoundingClientRect();\n if (Math.round(tableReact.bottom - gObj.getRowHeight()) <= Math.round(contetRect.bottom)) {\n this.parentCapUid = args.parentUid;\n this.groupCaptionAction = 'collapse';\n gObj.showSpinner();\n var caption = gObj.getRowObjectFromUID(args.parentUid);\n var childCount = this.getCaptionChildCount(caption);\n if (!childCount) {\n this.groupCaptionAction = 'refresh';\n this.makeGroupCollapseRequest();\n }\n else {\n this.makeGroupCollapseRequest(args.parentUid);\n }\n }\n }\n };\n InfiniteScroll.prototype.makeGroupCollapseRequest = function (parentUid) {\n var gObj = this.parent;\n var captionRows = [].slice.call(gObj.getContentTable().querySelectorAll('tr'));\n var rows = gObj.groupSettings.enableLazyLoading ? captionRows : gObj.getRows();\n var index = !gObj.groupSettings.enableLazyLoading ? getRowIndexFromElement(rows[rows.length - 1]) :\n gObj.contentModule['visibleRows'].length - 1;\n var prevPage = this.parent.pageSettings.currentPage;\n if (prevPage >= this.maxPage) {\n gObj.hideSpinner();\n return;\n }\n this.parent.pageSettings.currentPage = Math.ceil(index / this.parent.pageSettings.pageSize) + 1;\n var scrollArg = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: index + 1,\n direction: 'down',\n isCaptionCollapse: true,\n parentUid: parentUid\n };\n this.isGroupCollapse = true;\n this.parent.notify('model-changed', scrollArg);\n };\n InfiniteScroll.prototype.getCaptionChildCount = function (caption) {\n var rowObj = this.parent.getRowsObject();\n var index = rowObj.indexOf(caption);\n var make = false;\n for (var i = index; i < rowObj.length; i++) {\n if ((rowObj[parseInt(i.toString(), 10)].indent === caption.indent || rowObj[parseInt(i.toString(), 10)].indent < caption.indent)\n && rowObj[parseInt(i.toString(), 10)].data.key !== caption.data.key) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && !this.childCheck(rowObj, rowObj[parseInt(i.toString(), 10)], i)) {\n make = true;\n break;\n }\n }\n return make;\n };\n InfiniteScroll.prototype.childCheck = function (rowObj, row, index) {\n var childCount = 0;\n for (var i = index + 1; i < rowObj.length; i++) {\n if (rowObj[parseInt(i.toString(), 10)].indent === row.indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === (row.indent + 1)\n && rowObj[parseInt(i.toString(), 10)].parentUid === row.uid) {\n childCount++;\n }\n }\n return row.data.count === childCount;\n };\n InfiniteScroll.prototype.updateCurrentViewData = function () {\n var gObj = this.parent;\n if (gObj.groupSettings.columns.length) {\n return;\n }\n var keys = Object.keys(this.infiniteCurrentViewData);\n gObj.currentViewData = [];\n var page = gObj.pageSettings.currentPage;\n var isCache = gObj.infiniteScrollSettings.enableCache;\n var blocks = gObj.infiniteScrollSettings.maxBlocks;\n var isMiddlePage = isCache && (page > blocks || (this.isUpScroll && page > 1));\n var start = isMiddlePage ? this.isUpScroll ? page : (page - blocks) + 1 : 1;\n var end = isMiddlePage ? (start + blocks) - 1 : isCache ? blocks : keys.length;\n for (var i = start; i <= end; i++) {\n if (this.infiniteCurrentViewData[parseInt(i.toString(), 10)]) {\n gObj.currentViewData = gObj.currentViewData.concat(this.infiniteCurrentViewData[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.refreshInfiniteCurrentViewData = function (e) {\n var page = this.parent.pageSettings.currentPage;\n var size = this.parent.pageSettings.pageSize;\n var blocks = this.parent.infiniteScrollSettings.initialBlocks;\n var keys = Object.keys(this.infiniteCurrentViewData);\n var cache = this.parent.infiniteScrollSettings.enableCache;\n if (!this.parent.groupSettings.columns.length) {\n var isAdd = e.args.requestType === 'save' && !(this.parent.sortSettings.columns.length\n || this.parent.filterSettings.columns.length || this.parent.groupSettings.columns.length\n || this.parent.searchSettings.key);\n var isDelete = e.args.requestType === 'delete';\n if (!cache && (isAdd || isDelete)) {\n if (isAdd) {\n var indexCount = 0;\n for (var i = 1; i <= keys.length; i++) {\n indexCount += this.infiniteCurrentViewData[parseInt(i.toString(), 10)].length - 1;\n if (e.args.index <= indexCount) {\n this.resetCurrentViewData(i);\n this.infiniteCurrentViewData[parseInt(i.toString(), 10)]\n .splice(e.args.index, 0, e.args.data);\n break;\n }\n }\n }\n else {\n this.infiniteCurrentViewData[keys[keys.length - 1]].push(e.data[0]);\n }\n }\n else {\n if (blocks > 1 && e.data.length === (blocks * size)) {\n this.setInitialCache(e.data.slice(), {}, cache && e.args.requestType === 'delete', true);\n }\n else {\n this.infiniteCurrentViewData[parseInt(page.toString(), 10)] = e.data.slice();\n }\n }\n }\n };\n InfiniteScroll.prototype.resetCurrentViewData = function (startIndex) {\n var keys = Object.keys(this.infiniteCurrentViewData);\n for (var i = startIndex; i <= keys.length; i++) {\n var lastViewData = this.infiniteCurrentViewData[parseInt(i.toString(), 10)][this\n .infiniteCurrentViewData[parseInt(i.toString(), 10)].length - 1];\n if (this.infiniteCurrentViewData[i + 1]) {\n this.infiniteCurrentViewData[i + 1].splice(0, 0, lastViewData);\n }\n this.infiniteCurrentViewData[parseInt(i.toString(), 10)].pop();\n }\n };\n InfiniteScroll.prototype.deleteComplate = function () {\n if (this.parent.isFrozenGrid() && !this.parent.infiniteScrollSettings.enableCache) {\n this.parent.contentModule.refreshScrollOffset();\n }\n };\n InfiniteScroll.prototype.modelChanged = function (args) {\n var rows = this.parent.getRows();\n if (args.requestType === 'save' && args.index && args.data) {\n this.addRowIndex = args.index;\n }\n if (rows && rows.length && args.requestType !== 'infiniteScroll' && (args.requestType === 'delete' || this.requestType === 'add')) {\n this.firstIndex = getRowIndexFromElement(rows[0]);\n this.firstBlock = Math.ceil((this.firstIndex + 1) / this.parent.pageSettings.pageSize);\n this.lastIndex = getRowIndexFromElement(rows[rows.length - 1]);\n if (args.requestType === 'delete') {\n var rowObj = this.parent.getRowsObject();\n args.startIndex = this.parent.infiniteScrollSettings.enableCache\n ? (this.firstBlock - 1) * this.parent.pageSettings.pageSize : rowObj[rowObj.length - 1].index;\n }\n else {\n args.startIndex = this.firstIndex;\n }\n if (!this.parent.infiniteScrollSettings.enableCache\n && this.parent.pageSettings.currentPage === this.maxPage && args.requestType === 'delete') {\n this.isLastPage = true;\n this.lastIndex = this.lastIndex - 1;\n }\n }\n };\n InfiniteScroll.prototype.infiniteAddActionBegin = function (args) {\n if (this.isNormaledit) {\n this.isAdd = true;\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.emptyRowData).length) {\n this.createEmptyRowdata();\n }\n if (this.parent.pageSettings.currentPage > 1) {\n args.startEdit = false;\n this.resetInfiniteBlocks({}, true);\n this.makeRequest({ currentPage: 1 });\n }\n }\n }\n };\n InfiniteScroll.prototype.infiniteEditHandler = function (args) {\n if (!this.parent.infiniteScrollSettings.enableCache && (args.e.requestType === 'delete'\n || (args.e.requestType === 'save' && this.requestType === 'add'))) {\n var frozenCols = this.parent.isFrozenGrid();\n var rowElms = this.parent.getRows();\n var rows = this.parent.getRowsObject();\n if (this.ensureRowAvailability(rows, args.result[0])) {\n if (rowElms.length && !(this.addRowIndex && this.addRowIndex >= rowElms.length)) {\n this.resetRowIndex(rows, args.e, rowElms, this.requestType === 'add', true);\n if (frozenCols) {\n var rows_1 = this.parent.getMovableRowsObject();\n this.resetRowIndex(rows_1, args.e, this.parent.getMovableDataRows(), this.requestType === 'add');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frRows = this.parent.getFrozenRightRowsObject();\n this.resetRowIndex(frRows, args.e, this.parent.getFrozenRightRows(), this.requestType === 'add');\n }\n }\n }\n if (!this.isLastPage) {\n this.createRow(rows, args);\n }\n else {\n this.isLastPage = false;\n this.parent.pageSettings.currentPage = this.maxPage;\n if (this.parent.selectionModule.index < this.parent.frozenRows) {\n remove(rowElms[this.parent.frozenRows - 1]);\n this.createRow([rows[this.parent.frozenRows - 1]], args, false, true);\n if (frozenCols) {\n var movableRows = this.parent.getMovableDataRows();\n remove(movableRows[this.parent.frozenRows]);\n this.createRow([this.parent.getMovableRowsObject()[this.parent.frozenRows - 1]], args, true, true);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var rightRows = this.parent.getFrozenRightDataRows();\n remove(rightRows[this.parent.frozenRows]);\n this.createRow([this.parent.getFrozenRightRowsObject()[this.parent.frozenRows - 1]], args, false, true, true);\n }\n }\n setRowElements(this.parent);\n }\n }\n }\n this.parent.hideSpinner();\n this.parent.notify(events.refreshInfinitePersistSelection, {});\n if (this.requestType === 'delete') {\n this.parent.notify(events.deleteComplete, args.e);\n }\n else {\n this.parent.notify(events.saveComplete, args.e);\n }\n }\n this.parent.notify(events.freezeRender, { case: 'refreshHeight' });\n };\n InfiniteScroll.prototype.createRow = function (rows, args, isMovable, isFrozenRows, isFrozenRight) {\n var row = !isFrozenRows ? this.generateRows(args.result, args.e) : rows;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n this.parent.removeMaskRow();\n if (args.e.requestType === 'save' && args.e.index && args.e.data) {\n row[0].index = this.addRowIndex;\n this.addRowIndex = null;\n if (row[0].index >= rows.length) {\n return;\n }\n }\n var tbody;\n if (isFrozenRight) {\n tbody = this.parent.element.querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n }\n else {\n tbody = !this.parent.isFrozenGrid() ? this.parent.getContent().querySelector(literals.tbody) : isMovable\n ? this.parent.getMovableVirtualContent().querySelector(literals.tbody)\n : this.parent.getFrozenVirtualContent().querySelector(literals.tbody);\n }\n if (this.parent.frozenRows) {\n tbody = isFrozenRows && this.requestType !== 'add' || !isFrozenRows && this.requestType === 'add'\n ? !this.parent.isFrozenGrid() ? this.parent.getHeaderContent().querySelector(literals.tbody)\n : isMovable ? this.parent.getMovableVirtualHeader().querySelector(literals.tbody)\n : isFrozenRight ? this.parent.element.querySelector('.e-frozen-right-header').querySelector(literals.tbody)\n : this.parent.getFrozenVirtualHeader().querySelector(literals.tbody) : tbody;\n }\n var notifyArgs = {\n rows: rows, cancel: false, args: args, isMovable: isMovable,\n isFrozenRows: isFrozenRows, isFrozenRight: isFrozenRows, row: row\n };\n this.parent.notify(events.infiniteCrudCancel, notifyArgs);\n if (!notifyArgs.cancel) {\n for (var i = row.length - 1; i >= 0; i--) {\n if (this.requestType === 'delete') {\n tbody.appendChild(rowRenderer.render(row[parseInt(i.toString(), 10)], this.parent.getColumns()));\n }\n else {\n tbody.insertBefore(rowRenderer.render(row[parseInt(i.toString(), 10)], this.parent.getColumns()), tbody.rows[(args.e.index)]);\n }\n }\n }\n if (!isFrozenRows && this.parent.frozenRows\n && (this.parent.selectionModule.index < this.parent.frozenRows || this.requestType === 'add')) {\n var rowElems = isMovable ? this.parent.getMovableDataRows() : isFrozenRight ? this.parent.getFrozenRightDataRows()\n : this.parent.getRows();\n var index = (isMovable || isFrozenRight) && this.requestType === 'add'\n ? this.parent.frozenRows : this.parent.frozenRows - 1;\n remove(rowElems[parseInt(index.toString(), 10)]);\n this.createRow([rows[this.parent.frozenRows - 1]], args, isMovable, true, isFrozenRight);\n }\n if (!this.parent.infiniteScrollSettings.enableCache && !isFrozenRows) {\n if (isFrozenRight) {\n setRowElements(this.parent);\n this.parent.contentModule.rightFreezeRows = this.requestType === 'add'\n ? row.concat(rows) : rows.concat(row);\n }\n else if (!this.parent.isFrozenGrid() || isMovable) {\n setRowElements(this.parent);\n this.parent.contentModule.visibleRows = this.requestType === 'add'\n ? row.concat(rows) : rows.concat(row);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n args.e.renderMovableContent = true;\n this.createRow(this.parent.getFrozenRightRowsObject(), args, false, false, true);\n }\n }\n else {\n this.parent.contentModule.visibleFrozenRows = this.requestType === 'add'\n ? row.concat(rows) : rows.concat(row);\n args.e.isFrozen = true;\n this.createRow(this.parent.getMovableRowsObject(), args, true);\n }\n }\n };\n InfiniteScroll.prototype.ensureRowAvailability = function (rows, data) {\n var resume = true;\n if (this.parent.frozenRows && !this.parent.infiniteScrollSettings.enableCache\n && this.parent.sortSettings.columns && this.requestType === 'add') {\n var key = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].data[\"\" + key] === data[\"\" + key]) {\n resume = false;\n break;\n }\n }\n }\n return resume;\n };\n InfiniteScroll.prototype.generateRows = function (data, args) {\n return this.rowModelGenerator.generateRows(data, args);\n };\n InfiniteScroll.prototype.resetRowIndex = function (rows, args, rowElms, isAdd, isFrozen) {\n var _this = this;\n var keyField = this.parent.getPrimaryKeyFieldNames()[0];\n var isRemove = !(rowElms.length % this.parent.pageSettings.pageSize);\n if (isAdd) {\n if (isRemove) {\n if (isFrozen && !this.parent.groupSettings.columns.length) {\n this.swapCurrentViewData(1, true);\n }\n remove(rowElms[rows.length - 1]);\n rowElms.splice(rows.length - 1, 1);\n rows.splice(rows.length - 1, 1);\n }\n }\n else {\n rows.filter(function (e, index) {\n if (e.data[\"\" + keyField] === args.data[0][\"\" + keyField]) {\n if (isFrozen && !_this.parent.groupSettings.columns.length) {\n var page = Math.ceil((index + 1) / _this.parent.pageSettings.pageSize);\n _this.resetInfiniteCurrentViewData(page, index);\n }\n rows.splice(index, 1);\n remove(rowElms[parseInt(index.toString(), 10)]);\n rowElms.splice(index, 1);\n }\n });\n }\n var startIndex = isAdd ? this.addRowIndex ? this.addRowIndex + 1 : 1 : 0;\n resetRowIndex(this.parent, rows, rowElms, startIndex, this.addRowIndex ? this.addRowIndex : 0);\n };\n InfiniteScroll.prototype.resetInfiniteCurrentViewData = function (page, index) {\n index = index - ((page - 1) * this.parent.pageSettings.pageSize);\n this.infiniteCurrentViewData[parseInt(page.toString(), 10)].splice(index, 1);\n this.swapCurrentViewData(page, false);\n };\n InfiniteScroll.prototype.swapCurrentViewData = function (page, isAdd) {\n var keys = Object.keys(this.infiniteCurrentViewData);\n var end = isAdd ? keys.length + 1 : keys.length;\n for (var i = page; i < end; i++) {\n if (this.infiniteCurrentViewData[i + 1]) {\n var pageIndex = isAdd ? i : i + 1;\n var index = isAdd ? this.infiniteCurrentViewData[parseInt(i.toString(), 10)].length - 1 : 0;\n var data = this.infiniteCurrentViewData[parseInt(pageIndex.toString(), 10)].splice(index, 1);\n if (isAdd) {\n this.infiniteCurrentViewData[i + 1] = data.concat(this.infiniteCurrentViewData[i + 1]);\n if ((i + 1) === end - 1) {\n this.infiniteCurrentViewData[i + 1].splice(this.infiniteCurrentViewData[i + 1].length - 1, 1);\n }\n }\n else {\n this.infiniteCurrentViewData[parseInt(i.toString(), 10)].push(data[0]);\n }\n }\n }\n this.updateCurrentViewData();\n };\n InfiniteScroll.prototype.setDisplayNone = function (args) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var frozenCols = this.parent.isFrozenGrid();\n var keys = frozenCols ? Object.keys(this.infiniteFrozenCache) : Object.keys(this.infiniteCache);\n for (var i = 1; i <= keys.length; i++) {\n var cache = frozenCols ? args.isFreeze ? this.infiniteFrozenCache[parseInt(i.toString(), 10)][0]\n : this.infiniteFrozenCache[parseInt(i.toString(), 10)][1] : this.infiniteCache[parseInt(i.toString(), 10)];\n cache.filter(function (e) {\n e.cells[args.index].visible = args.visible === '';\n });\n }\n this.resetContentModuleCache(frozenCols ? this.infiniteFrozenCache : this.infiniteCache);\n }\n };\n InfiniteScroll.prototype.refreshInfiniteCache = function (args) {\n this.getEditedRowObject().data = args.data;\n };\n InfiniteScroll.prototype.refreshInfiniteCacheRowVisibleLength = function (args, currentPage) {\n var cPageRowArray = args[parseInt(currentPage.toString(), 10)];\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n var length_1 = 0;\n var vRowLen = 0;\n var hRowLen = 0;\n for (var i = 0; i < cPageRowArray.length; i++) {\n if (cPageRowArray[parseInt(i.toString(), 10)].visible\n || isNullOrUndefined(cPageRowArray[parseInt(i.toString(), 10)].visible)) {\n vRowLen++;\n }\n else {\n hRowLen++;\n }\n }\n if (hRowLen > vRowLen) {\n length_1 = hRowLen - vRowLen;\n if (length_1 > vRowLen) {\n length_1 = vRowLen;\n }\n }\n else {\n length_1 = vRowLen - hRowLen;\n if (length_1 > hRowLen) {\n length_1 = hRowLen;\n }\n }\n if (length_1 === 0) {\n length_1 = 1;\n }\n return length_1;\n }\n else {\n return cPageRowArray.length;\n }\n };\n InfiniteScroll.prototype.refreshInfiniteEditrowindex = function (args) {\n this.editRowIndex = args.index;\n };\n InfiniteScroll.prototype.getEditedRowObject = function () {\n var rowObjects = this.parent.getRowsObject();\n var editedrow;\n for (var i = 0; i < rowObjects.length; i++) {\n if (rowObjects[parseInt(i.toString(), 10)].index === this.editRowIndex) {\n editedrow = rowObjects[parseInt(i.toString(), 10)];\n }\n }\n return editedrow;\n };\n InfiniteScroll.prototype.infiniteEditSuccess = function (args) {\n if (this.isNormaledit) {\n if (!this.isAdd && args.data) {\n this.updateCurrentViewRecords(args.data);\n }\n this.isAdd = false;\n }\n };\n InfiniteScroll.prototype.updateCurrentViewRecords = function (data) {\n var index = getEditedDataIndex(this.parent, data);\n if (!isNullOrUndefined(index)) {\n this.parent.getCurrentViewRecords()[parseInt(index.toString(), 10)] = data;\n }\n };\n InfiniteScroll.prototype.actionBegin = function (args) {\n if (args.requestType === 'add' || args.requestType === 'delete') {\n this.requestType = args.requestType;\n }\n else if (args.action === 'add' && args.requestType === 'save') {\n this.requestType = args.action;\n }\n if (this.parent.isFrozenGrid() && !args.cancel && args.requestType === 'searching'\n || args.requestType === 'sorting' || args.requestType === 'filtering') {\n this.isInitialRender = true;\n }\n };\n InfiniteScroll.prototype.actionComplete = function (args) {\n if (args.requestType === 'delete' || args.requestType === 'save' || args.requestType === 'cancel') {\n this.requestType = this.empty;\n this.isCancel = args.requestType === 'cancel' || args.requestType === 'save';\n this.isAdd = this.isEdit = false;\n if (this.isNormaledit) {\n this.editRowIndex = this.empty;\n this.virtualInfiniteData = {};\n this.parent.editModule.previousVirtualData = {};\n }\n }\n };\n InfiniteScroll.prototype.resetInfiniteEdit = function () {\n if (this.parent.enableInfiniteScrolling && this.isNormaledit) {\n if ((this.parent.editSettings.allowEditing && this.isEdit) || (this.parent.editSettings.allowAdding && this.isAdd)) {\n this.parent.isEdit = true;\n }\n }\n };\n InfiniteScroll.prototype.getVirtualInfiniteData = function (data) {\n this.getVirtualInfiniteEditedData();\n data.virtualData = this.virtualInfiniteData;\n data.isAdd = this.isAdd;\n data.isCancel = this.isCancel;\n };\n InfiniteScroll.prototype.editActionBegin = function (e) {\n this.isEdit = true;\n this.editRowIndex = e.index;\n var rowObject = extend({}, this.getEditedRowObject().data);\n e.data = Object.keys(this.virtualInfiniteData).length ? this.virtualInfiniteData : rowObject;\n };\n InfiniteScroll.prototype.dataSourceModified = function () {\n this.resetInfiniteBlocks({ requestType: this.empty }, true);\n };\n InfiniteScroll.prototype.onDataReady = function (e) {\n if (!isNullOrUndefined(e.count) && e.requestType !== 'infiniteScroll') {\n this.maxPage = Math.ceil(e.count / this.parent.pageSettings.pageSize);\n }\n };\n InfiniteScroll.prototype.ensureIntialCollapse = function (isExpand) {\n this.isInitialCollapse = !isExpand;\n };\n InfiniteScroll.prototype.infiniteScrollHandler = function (e) {\n this.restoreInfiniteEdit();\n this.restoreInfiniteAdd();\n var targetEle = e.target;\n var isInfinite = targetEle.classList.contains(literals.content);\n if (isInfinite && this.parent.enableInfiniteScrolling && !e.isLeft) {\n var scrollEle = this.parent.getContent().firstElementChild;\n var captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.prevScrollTop = scrollEle.scrollTop;\n var rows = this.parent.groupSettings.enableLazyLoading ? captionRows : this.parent.getRows();\n if (!rows.length) {\n return;\n }\n var index = getRowIndexFromElement(rows[rows.length - 1]) + 1;\n var prevPage = this.parent.pageSettings.currentPage;\n var args = void 0;\n var offset = targetEle.scrollHeight - targetEle.scrollTop;\n var round = Math.round(targetEle.scrollHeight - targetEle.scrollTop);\n var floor = offset < targetEle.clientHeight ? Math.ceil(offset) : Math.floor(offset);\n if (floor > targetEle.clientHeight) {\n floor = floor - 1;\n }\n var isBottom = (floor === targetEle.clientHeight || round === targetEle.clientHeight);\n if (!isNullOrUndefined(this.groupCaptionAction)) {\n return;\n }\n if (this.isScroll && isBottom && (this.parent.pageSettings.currentPage <= this.maxPage - 1 || this.enableContinuousScroll)) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n this.isUpScroll = false;\n this.isDownScroll = true;\n }\n var rows_2 = [].slice.call(scrollEle.querySelectorAll('.e-row:not(.e-addedrow)'));\n var row = rows_2[rows_2.length - 1];\n var rowIndex = !this.parent.groupSettings.enableLazyLoading ? getRowIndexFromElement(row) :\n this.parent.contentModule['visibleRows'].length - 1;\n this.parent.pageSettings.currentPage = Math.ceil(rowIndex / this.parent.pageSettings.pageSize) + 1;\n args = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: index,\n direction: 'down'\n };\n this.makeRequest(args);\n }\n if (this.isScroll && this.parent.infiniteScrollSettings.enableCache && targetEle.scrollTop === 0\n && this.parent.pageSettings.currentPage !== 1) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n this.isDownScroll = false;\n this.isUpScroll = true;\n }\n var row = [].slice.call(scrollEle.getElementsByClassName(literals.row));\n var rowIndex = getRowIndexFromElement(row[this.parent.pageSettings.pageSize - 1]);\n var startIndex = getRowIndexFromElement(row[0]) - this.parent.pageSettings.pageSize;\n this.parent.pageSettings.currentPage = Math.ceil(rowIndex / this.parent.pageSettings.pageSize) - 1;\n if (this.parent.pageSettings.currentPage) {\n args = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: startIndex,\n direction: 'up'\n };\n this.makeRequest(args);\n }\n }\n if (this.parent.infiniteScrollSettings.enableCache && !this.isScroll && isNullOrUndefined(args)) {\n if (this.isDownScroll || this.isUpScroll) {\n scrollEle.scrollTop = this.top;\n }\n }\n }\n };\n InfiniteScroll.prototype.makeRequest = function (args) {\n var _this = this;\n if (this.parent.pageSettings.currentPage !== args.prevPage) {\n var initBlocks = this.parent.infiniteScrollSettings.initialBlocks;\n if (initBlocks < this.maxPage && this.parent.pageSettings.currentPage <= this.maxPage) {\n this.isInfiniteScroll = true;\n if (isNullOrUndefined(this.infiniteCache[args.currentPage])) {\n setTimeout(function () {\n _this.getVirtualInfiniteEditedData();\n _this.parent.notify('model-changed', args);\n }, 100);\n }\n else {\n setTimeout(function () {\n _this.getVirtualInfiniteEditedData();\n _this.parent.notify(events.refreshInfiniteModeBlocks, args);\n }, 100);\n }\n }\n else {\n this.parent.pageSettings.currentPage = this.maxPage;\n }\n }\n };\n InfiniteScroll.prototype.infinitePageQuery = function (query) {\n if (this.initialRender) {\n this.initialRender = false;\n this.intialPageQuery(query);\n }\n else {\n if ((this.requestType === 'delete' || this.requestType === 'add')) {\n if (!this.isInfiniteScroll && !this.parent.groupSettings.enableLazyLoading) {\n this.editPageQuery(query);\n }\n else if (this.parent.groupSettings.enableLazyLoading && !this.parent.infiniteScrollSettings.enableCache) {\n if (this.parent.infiniteScrollSettings.initialBlocks < this.parent.pageSettings.currentPage) {\n query.page(1, this.parent.pageSettings.pageSize * this.parent.pageSettings.currentPage);\n }\n else {\n query.page(1, this.parent.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks);\n }\n }\n else {\n query.page(this.parent.pageSettings.currentPage, this.parent.pageSettings.pageSize);\n }\n }\n else {\n query.page(this.parent.pageSettings.currentPage, this.parent.pageSettings.pageSize);\n }\n }\n };\n InfiniteScroll.prototype.editPageQuery = function (query) {\n var initialBlocks = this.parent.infiniteScrollSettings.initialBlocks;\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (isCache) {\n this.infiniteCache = {};\n this.infiniteFrozenCache = {};\n this.infiniteCurrentViewData = {};\n query.skip(this.firstIndex);\n query.take(initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n if (this.parent.editSettings.mode === 'Dialog') {\n this.parent.clearSelection();\n }\n var index = this.requestType === 'delete' ? this.lastIndex : this.addRowIndex ? this.addRowIndex : this.firstIndex;\n query.skip(index);\n if (!isNullOrUndefined(this.parent.getDataModule().dataManager.dataSource.url) &&\n this.parent.getDataModule().dataManager.dataSource.url !== '' && (this.requestType === 'delete' ||\n this.requestType === 'add')) {\n query.take(initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n query.take(1);\n }\n }\n };\n InfiniteScroll.prototype.intialPageQuery = function (query) {\n if (this.parent.infiniteScrollSettings.enableCache\n && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {\n this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;\n }\n var pageSize = this.parent.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks;\n query.page(1, pageSize);\n };\n InfiniteScroll.prototype.scrollToLastFocusedCell = function (e) {\n var gObj = this.parent;\n var rowIdx = this.lastFocusInfo.rowIdx + (e.keyArgs.action === literals.upArrow ? -1 : 1);\n var cellIdx = this.lastFocusInfo.cellIdx;\n var row = gObj.getRowByIndex(rowIdx);\n if (!row) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var page = Math.floor(rowIdx / this.parent.pageSettings.pageSize) + 1;\n gObj.pageSettings.currentPage = page;\n var cols = gObj.getColumns();\n remove(gObj.getContent().querySelector('tbody'));\n gObj.getContent().querySelector('table').appendChild(gObj.createElement('tbody', { attrs: { 'role': 'rowgroup' } }));\n var focusRows = [];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n for (var i = (page === 1 || this.maxPage === page) ? 0 : -1, k = 0; k < gObj.infiniteScrollSettings.maxBlocks; this.maxPage === page ? i-- : i++, k++) {\n var rows = this.infiniteCache[page + i];\n if (rows) {\n focusRows = focusRows.concat(rows);\n for (var j = 0; j < rows.length; j++) {\n gObj.getContent().querySelector('tbody').appendChild(rowRenderer.render(rows[parseInt(j.toString(), 10)], cols));\n }\n }\n }\n gObj.notify(events.contentReady, { rows: focusRows, args: {} });\n setRowElements(gObj);\n }\n row = gObj.getRowByIndex(rowIdx);\n var target = row.cells[parseInt(cellIdx.toString(), 10)];\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n gObj.selectRow(rowIdx);\n target.focus();\n this.isFocusScroll = false;\n e.cancel = true;\n };\n InfiniteScroll.prototype.setLastCellFocusInfo = function (e) {\n var cell = ((e.byClick && e.clickArgs.target) || (e.byKey && e.keyArgs.target)\n || (!this.isFocusScroll && e).target);\n if (cell && cell.classList.contains('e-rowcell')) {\n var cellIdx = parseInt(cell.getAttribute('data-colindex'), 10);\n var rowIdx = parseInt(cell.parentElement.getAttribute('data-rowindex'), 10);\n this.lastFocusInfo = { rowIdx: rowIdx, cellIdx: cellIdx };\n }\n };\n InfiniteScroll.prototype.infiniteCellFocus = function (e) {\n var gObj = this.parent;\n var cache = gObj.infiniteScrollSettings.enableCache;\n if (e.byKey) {\n if (cache && this.isFocusScroll) {\n this.scrollToLastFocusedCell(e);\n return;\n }\n var cell = document.activeElement;\n var rowIndex = getRowIndexFromElement(cell.parentElement);\n this.cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n var content = gObj.getContent().firstElementChild;\n var totalRowsCount = (this.maxPage * gObj.pageSettings.pageSize) - 1;\n var visibleRowCount = Math.floor(content.offsetHeight / this.parent.getRowHeight());\n var contentRect = content.getBoundingClientRect();\n if (!isNaN(rowIndex)) {\n if (e.keyArgs.action === literals.downArrow || e.keyArgs.action === literals.enter) {\n this.rowIndex = rowIndex += 1;\n var row = gObj.getRowByIndex(rowIndex);\n var rowRect = row && row.getBoundingClientRect();\n if (cache) {\n rowIndex = cell.parentElement.rowIndex + 1;\n }\n if (this.isFocusScroll || (!row && rowIndex < totalRowsCount)\n || (rowRect && rowRect.bottom >= contentRect.bottom)) {\n if (!this.isFocusScroll) {\n this.pressedKey = e.keyArgs.action;\n }\n this.isFocusScroll = false;\n content.scrollTop = ((rowIndex - visibleRowCount) + 1) * this.parent.getRowHeight();\n }\n else if (!cache && row) {\n if (rowRect && (rowRect.bottom >= contentRect.bottom || rowRect.top < contentRect.top)) {\n row.cells[this.cellIndex].scrollIntoView();\n }\n }\n }\n else if (e.keyArgs.action === literals.upArrow || e.keyArgs.action === literals.shiftEnter) {\n this.rowIndex = rowIndex -= 1;\n var row = gObj.getRowByIndex(rowIndex);\n var rowRect = row && row.getBoundingClientRect();\n if (cache) {\n rowIndex = cell.parentElement.rowIndex - 1;\n }\n if (!row || rowRect.top <= contentRect.top) {\n this.pressedKey = e.keyArgs.action;\n content.scrollTop = rowIndex * this.parent.getRowHeight();\n }\n }\n }\n }\n else if (e.key === 'PageDown' || e.key === 'PageUp') {\n this.pressedKey = e.key;\n }\n this.setLastCellFocusInfo(e);\n };\n InfiniteScroll.prototype.createEmptyRowdata = function () {\n var _this = this;\n this.parent.getColumns().filter(function (e) {\n _this.emptyRowData[e.field] = _this.empty;\n });\n };\n InfiniteScroll.prototype.getVirtualInfiniteEditedData = function () {\n var editForm = this.parent.element.querySelector('.' + literals.editedRow);\n var addForm = this.parent.element.querySelector('.' + literals.addedRow);\n var gridForm = this.parent.element.querySelector('.e-gridform');\n if (this.parent.infiniteScrollSettings.enableCache && (editForm || addForm)) {\n var rowData = editForm ? extend({}, this.getEditedRowObject().data)\n : extend({}, this.emptyRowData);\n this.virtualInfiniteData = this.parent.editModule.getCurrentEditedData(gridForm, rowData);\n var hiddenColumn = this.parent.getHiddenColumns();\n for (var i = 0; i < hiddenColumn.length; i++) {\n if (hiddenColumn[parseInt(i.toString(), 10)].defaultValue) {\n this.virtualInfiniteData[hiddenColumn[parseInt(i.toString(), 10)].field] =\n hiddenColumn[parseInt(i.toString(), 10)].defaultValue;\n }\n }\n if (this.parent.isFrozenGrid()) {\n this.virtualInfiniteData = this.parent.editModule\n .getCurrentEditedData(this.parent.getMovableVirtualContent().querySelector('.e-gridform'), rowData);\n }\n }\n };\n InfiniteScroll.prototype.restoreInfiniteEdit = function () {\n var content = this.parent.getContent().firstElementChild;\n var frozenEdit = this.parent.frozenRows ? this.editRowIndex >= this.parent.frozenRows : true;\n if (this.isNormaledit && this.parent.infiniteScrollSettings.enableCache && frozenEdit) {\n if (this.parent.editSettings.allowEditing && !isNullOrUndefined(this.editRowIndex)) {\n var row = this.parent.getRowByIndex(this.editRowIndex);\n if (Object.keys(this.virtualInfiniteData).length && row && !this.parent.getContent().querySelector('.' + literals.editedRow)) {\n var top_1 = row.getBoundingClientRect().top;\n if (top_1 < content.offsetHeight && top_1 > this.parent.getRowHeight()) {\n this.parent.isEdit = false;\n this.parent.editModule.startEdit(row);\n }\n }\n }\n }\n };\n InfiniteScroll.prototype.restoreInfiniteAdd = function () {\n var content = this.parent.getContent().firstElementChild;\n if (this.parent.getCurrentViewRecords().length && this.parent.getRowByIndex(0) && this.isNormaledit &&\n this.parent.infiniteScrollSettings.enableCache && this.isAdd && !content.querySelector('.' + literals.addedRow)) {\n var isTop = content.scrollTop < this.parent.getRowHeight();\n if (isTop) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n }\n };\n InfiniteScroll.prototype.appendInfiniteRows = function (e) {\n var frozenCols = this.parent.isFrozenGrid();\n var scrollEle = this.parent.getContent().firstElementChild;\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll';\n var isMovable = this.parent.getFrozenMode() === literals.leftRight && e.tableName === 'movable';\n if ((isInfiniteScroll && !e.args.isFrozen && !isMovable) || !isInfiniteScroll) {\n if (isInfiniteScroll && e.args.direction === 'up') {\n e.tbody.insertBefore(e.frag, e.tbody.firstElementChild);\n }\n else {\n e.tbody.appendChild(e.frag);\n }\n }\n if (!frozenCols) {\n this.parent.contentModule.getTable().appendChild(e.tbody);\n this.updateCurrentViewData();\n }\n else {\n if (isInfiniteScroll) {\n if (e.tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right' && e.tableName === literals.frozenRight)) {\n this.frozenFrag = e.frag;\n }\n else if (this.parent.getFrozenMode() === literals.leftRight && e.tableName === 'movable') {\n this.movableFrag = e.frag;\n }\n else {\n var tbody = this.parent.getFrozenVirtualContent().querySelector(literals.tbody);\n if (e.args.direction === 'up') {\n tbody.insertBefore(this.frozenFrag, tbody.firstElementChild);\n }\n else {\n tbody.appendChild(this.frozenFrag);\n }\n if (e.tableName === literals.frozenRight) {\n this.parent.getMovableVirtualContent().querySelector(literals.tbody).appendChild(this.movableFrag);\n this.parent.element.querySelector('.e-frozen-right-content').querySelector(literals.tbody).appendChild(e.frag);\n }\n else {\n this.parent.getMovableVirtualContent().querySelector('.' + literals.table).appendChild(e.tbody);\n }\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n else {\n var table = void 0;\n if (e.tableName === literals.frozenLeft) {\n table = this.parent.getFrozenVirtualContent().querySelector('.' + literals.table);\n }\n else if (e.tableName === 'movable') {\n table = this.parent.getMovableVirtualContent().querySelector('.' + literals.table);\n if (this.parent.getFrozenMode() !== literals.leftRight) {\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n else {\n table = this.parent.element.querySelector('.e-frozen-right-content').querySelector('.' + literals.table);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n table.appendChild(e.tbody);\n this.widthService.refreshFrozenScrollbar();\n }\n }\n if (this.isInitialRender && !e.args.isFrozen) {\n this.isInitialRender = false;\n this.parent.scrollModule.setHeight();\n }\n if (!e.args.isFrozen) {\n this.rowTop = !this.rowTop ? this.parent.getRows()[0].getBoundingClientRect().top : this.rowTop;\n if (isInfiniteScroll) {\n if (this.parent.infiniteScrollSettings.enableCache && this.isRemove) {\n scrollEle.scrollTop = this.top;\n }\n setRowElements(this.parent);\n }\n this.restoreInfiniteAdd();\n this.isScroll = true;\n }\n this.isInfiniteScroll = false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n InfiniteScroll.prototype.selectNewRow = function (args) {\n var _this = this;\n var gObj = this.parent;\n var row = gObj.getRowByIndex(this.rowIndex);\n var cache = gObj.infiniteScrollSettings.enableCache;\n if (row && this.keys.some(function (value) { return value === _this.pressedKey; })) {\n var content = gObj.getContent().firstElementChild;\n var rowHeight = gObj.getRowHeight();\n var target = row.cells[this.cellIndex];\n if ((this.pressedKey === literals.downArrow || this.pressedKey === literals.enter)\n || (cache && (this.pressedKey === literals.upArrow || this.pressedKey === literals.shiftEnter))) {\n if (!cache && this.pressedKey !== literals.upArrow && this.pressedKey !== literals.shiftEnter) {\n content.scrollTop = content.scrollTop + rowHeight;\n }\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n gObj.selectRow(this.rowIndex);\n }\n }\n else if (this.lastFocusInfo && (this.pressedKey === literals.pageDown || this.pressedKey === literals.pageUp)) {\n var idx = cache ? 0 : this.lastFocusInfo.rowIdx;\n if (gObj.getRowByIndex(idx)) {\n var target = gObj.getCellFromIndex(idx, this.lastFocusInfo.cellIdx);\n if (target) {\n this.isFocusScroll = true;\n if (!cache) {\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n }\n else {\n target.focus({ preventScroll: true });\n }\n }\n }\n }\n this.pressedKey = undefined;\n };\n InfiniteScroll.prototype.removeInfiniteCacheRows = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll';\n if (!e.args.isFrozen && isInfiniteScroll && this.parent.infiniteScrollSettings.enableCache && this.isRemove) {\n var rows = [].slice.call(this.parent.getContentTable().getElementsByClassName(literals.row));\n if (e.args.direction === 'down') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n var captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.removeCaptionRows(captionRows, e.args);\n }\n var addRowCount = this.parent.element.querySelector('.' + literals.addedRow) ? 0 : 1;\n this.removeTopRows(rows, this.parent.pageSettings.pageSize - addRowCount);\n }\n if (e.args.direction === 'up') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n var captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.removeCaptionRows(captionRows, e.args);\n }\n else {\n this.removeBottomRows(rows, rows.length - 1, e.args);\n }\n }\n this.isScroll = false;\n this.top = this.calculateScrollTop(e.args);\n }\n };\n InfiniteScroll.prototype.calculateScrollTop = function (args) {\n var top = 0;\n var scrollCnt = this.parent.getContent().firstElementChild;\n if (args.direction === 'down') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !this.isInitialCollapse) {\n top = this.captionRowHeight();\n }\n var captionRows = [].slice.call(this.parent.getContent().firstElementChild.querySelectorAll('tr:not(.e-row)'));\n var captionCount = 0;\n if (this.isInitialCollapse && !isNullOrUndefined(captionRows)) {\n captionCount = Math.round((captionRows.length - 1) / this.parent.groupSettings.columns.length);\n }\n var value = captionCount ? captionCount\n : this.parent.pageSettings.pageSize * (this.parent.infiniteScrollSettings.maxBlocks - 1);\n var currentViewRowCount = 0;\n var i = 0;\n while (currentViewRowCount < scrollCnt.clientHeight) {\n i++;\n currentViewRowCount = i * this.parent.getRowHeight();\n }\n i = i - 1;\n top += (value - i) * this.parent.getRowHeight();\n }\n if (args.direction === 'up') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !this.isInitialCollapse) {\n var len = this.refreshInfiniteCacheRowVisibleLength(this.infiniteCache, this.parent.pageSettings.currentPage);\n top = len * this.parent.getRowHeight();\n }\n else if (this.isInitialCollapse) {\n var groupedData = this.infiniteCache[this.parent.pageSettings.currentPage];\n var count = 0;\n for (var i = 0; i < groupedData.length; i++) {\n if (groupedData[parseInt(i.toString(), 10)].isCaptionRow) {\n count++;\n }\n }\n top += Math.round(count / this.parent.groupSettings.columns.length) * this.parent.getRowHeight();\n }\n else {\n top += (this.parent.pageSettings.pageSize * this.parent.getRowHeight() + getScrollBarWidth());\n }\n }\n return top;\n };\n InfiniteScroll.prototype.captionRowHeight = function () {\n var rows = [].slice.call(this.parent.getContent().querySelectorAll('tr:not(.e-row)'));\n return rows.length * this.parent.getRowHeight();\n };\n InfiniteScroll.prototype.removeTopRows = function (rows, maxIndx) {\n var frozeCols = this.parent.isFrozenGrid();\n var frRows = this.parent.getFrozenMode() === literals.leftRight\n ? [].slice.call(this.parent.element.querySelector('.e-frozen-right-content').getElementsByClassName(literals.row)) : null;\n var movableRows = frozeCols ?\n [].slice.call(this.parent.getMovableVirtualContent().getElementsByClassName(literals.row)) : null;\n for (var i = 0; i <= maxIndx; i++) {\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage === this.parent.infiniteScrollSettings.maxBlocks + 1\n && i > (maxIndx - this.parent.frozenRows)) {\n continue;\n }\n remove(rows[parseInt(i.toString(), 10)]);\n if (movableRows) {\n remove(movableRows[parseInt(i.toString(), 10)]);\n }\n if (frRows) {\n remove(frRows[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.removeBottomRows = function (rows, maxIndx, args) {\n var cnt = 0;\n var frozeCols = this.parent.isFrozenGrid();\n var movableRows = frozeCols ?\n [].slice.call(this.parent.getMovableVirtualContent().getElementsByClassName(literals.row)) : null;\n var frRows = this.parent.getFrozenMode() === literals.leftRight ?\n [].slice.call(this.parent.element.querySelector('.e-frozen-right-content').getElementsByClassName(literals.row)) : null;\n var pageSize = this.parent.pageSettings.pageSize;\n if (!frozeCols && this.infiniteCache[args.prevPage].length < pageSize) {\n cnt = this.parent.pageSettings.pageSize - this.infiniteCache[args.prevPage].length;\n }\n if (frozeCols && this.infiniteFrozenCache[args.prevPage][1].length < pageSize) {\n cnt = this.parent.pageSettings.pageSize - this.infiniteFrozenCache[args.prevPage][1].length;\n }\n for (var i = maxIndx; cnt < pageSize; i--) {\n cnt++;\n remove(rows[parseInt(i.toString(), 10)]);\n if (movableRows) {\n remove(movableRows[parseInt(i.toString(), 10)]);\n }\n if (frRows) {\n remove(frRows[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.removeCaptionRows = function (rows, args) {\n var rowElements = [].slice.call(this.parent.getContent().getElementsByClassName(literals.row));\n if (args.direction === 'down') {\n var lastRow = rowElements[this.parent.pageSettings.pageSize - 1];\n var lastRowIndex = getRowIndexFromElement(lastRow) - 1;\n var k = 0;\n for (var i = 0; k < lastRowIndex; i++) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains(literals.row)) {\n remove(rows[parseInt(i.toString(), 10)]);\n }\n else {\n k = getRowIndexFromElement(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n if (args.direction === 'up') {\n var lastIndex = getRowIndexFromElement(rowElements[rowElements.length - 1]);\n var page = Math.ceil(lastIndex / this.parent.pageSettings.pageSize);\n var startIndex = 0;\n for (var i = this.parent.pageSettings.currentPage + 1; i < page; i++) {\n startIndex += this.infiniteCache[parseInt(i.toString(), 10)].length;\n }\n for (var i = startIndex; i < rows.length; i++) {\n remove(rows[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.resetInfiniteBlocks = function (args, isDataModified) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && args.requestType !== 'infiniteScroll';\n if (!this.initialRender && !isNullOrUndefined(this.parent.infiniteScrollModule) && isInfiniteScroll) {\n if (this.actions.some(function (value) { return value === args.requestType; }) || isDataModified || (args.requestType === 'save'\n && (this.parent.sortSettings.columns.length || this.parent.filterSettings.columns.length\n || this.parent.groupSettings.columns.length || this.parent.searchSettings.key))) {\n var scrollEle = this.parent.getContent().firstElementChild;\n this.initialRender = true;\n scrollEle.scrollTop = 0;\n this.parent.pageSettings.currentPage = 1;\n this.infiniteCache = this.infiniteFrozenCache = {};\n this.infiniteCurrentViewData = {};\n this.resetContentModuleCache({});\n this.isRemove = false;\n this.top = 0;\n this.isInitialMovableRender = true;\n this.isInitialCollapse = false;\n this.parent.contentModule.isRemove = this.isRemove;\n this.parent.contentModule.isAddRows = this.isRemove;\n this.parent.contentModule.visibleRows = [];\n this.parent.contentModule.visibleFrozenRows = [];\n }\n }\n };\n InfiniteScroll.prototype.setCache = function (e) {\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n var frozeCols = this.parent.isFrozenGrid();\n var idx = e.args.isFrozen ? 1 : 0;\n var isEdit = e.args.requestType !== 'infiniteScroll'\n && (this.requestType === 'delete' || this.requestType === 'add');\n var currentPage = this.parent.pageSettings.currentPage;\n if ((frozeCols && this.isInitialMovableRender) || (!frozeCols && !Object.keys(this.infiniteCache).length) || isEdit) {\n this.isInitialMovableRender = !e.args.isFrozen;\n this.setInitialCache(e.modelData, e.args, isEdit);\n }\n if (!frozeCols && isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.infiniteCache[this.parent.pageSettings.currentPage] = e.modelData;\n this.resetContentModuleCache(this.infiniteCache);\n }\n if (frozeCols) {\n if ((idx === 0 && isNullOrUndefined(this.infiniteFrozenCache[parseInt(currentPage.toString(), 10)]))\n || !this.infiniteFrozenCache[parseInt(currentPage.toString(), 10)][parseInt(idx.toString(), 10)].length) {\n this.createFrozenCache(currentPage);\n this.infiniteFrozenCache[parseInt(currentPage.toString(), 10)][parseInt(idx.toString(), 10)] = e.modelData;\n if (idx === 1) {\n this.resetContentModuleCache(this.infiniteFrozenCache);\n }\n }\n }\n if (e.isInfiniteScroll && !this.isRemove) {\n this.isRemove = (currentPage - 1) % this.parent.infiniteScrollSettings.maxBlocks === 0;\n this.parent.contentModule.isRemove = this.isRemove;\n }\n }\n };\n InfiniteScroll.prototype.setInitialCache = function (data, args, isEdit, isCurrentViewData) {\n var frozenCols = this.parent.isFrozenGrid();\n var idx = args.isFrozen ? 1 : 0;\n var k = !isEdit ? 1 : isNullOrUndefined(this.firstBlock) ? 1 : this.firstBlock;\n for (var i = 1; i <= this.parent.infiniteScrollSettings.initialBlocks; i++) {\n var startIndex = (i - 1) * this.parent.pageSettings.pageSize;\n var endIndex = i * this.parent.pageSettings.pageSize;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !isCurrentViewData) {\n this.setInitialGroupCache(data, k, startIndex, endIndex);\n }\n else {\n if (isCurrentViewData) {\n this.infiniteCurrentViewData[parseInt(k.toString(), 10)] = data.slice(startIndex, endIndex);\n }\n else {\n if (frozenCols) {\n this.createFrozenCache(k);\n this.infiniteFrozenCache[parseInt(k.toString(), 10)][parseInt(idx.toString(), 10)] = data\n .slice(startIndex, endIndex);\n this.resetContentModuleCache(this.infiniteFrozenCache);\n }\n else {\n this.infiniteCache[parseInt(k.toString(), 10)] = data.slice(startIndex, endIndex);\n this.resetContentModuleCache(this.infiniteCache);\n }\n }\n }\n k++;\n }\n };\n InfiniteScroll.prototype.createFrozenCache = function (index) {\n if (!this.infiniteFrozenCache[parseInt(index.toString(), 10)]) {\n this.infiniteFrozenCache[parseInt(index.toString(), 10)] = [[], []];\n }\n };\n InfiniteScroll.prototype.setInitialGroupCache = function (data, index, sIndex, eIndex) {\n var pageData = [];\n var startIndex = 0;\n for (var i = 1; i <= Object.keys(this.infiniteCache).length; i++) {\n startIndex += this.infiniteCache[parseInt(i.toString(), 10)].length;\n }\n var k = sIndex;\n for (var i = startIndex; i < data.length && k < eIndex; i++) {\n if (data[parseInt(i.toString(), 10)].index < eIndex || data[parseInt(i.toString(), 10)].isCaptionRow) {\n k = data[parseInt(i.toString(), 10)].isCaptionRow ? k : data[parseInt(i.toString(), 10)].index;\n pageData.push(data[parseInt(i.toString(), 10)]);\n }\n if (data[parseInt(i.toString(), 10)].index >= eIndex || data[parseInt(i.toString(), 10)].index === eIndex - 1) {\n break;\n }\n }\n this.infiniteCache[parseInt(index.toString(), 10)] = pageData;\n this.resetContentModuleCache(this.infiniteCache);\n };\n InfiniteScroll.prototype.resetContentModuleCache = function (data) {\n this.parent.contentModule\n .infiniteCache = data;\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return InfiniteScroll;\n}());\nexport { InfiniteScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `InlineEdit` module is used to handle inline editing actions.\n *\n * @hidden\n */\nvar InlineEdit = /** @class */ (function (_super) {\n __extends(InlineEdit, _super);\n function InlineEdit(parent, serviceLocator, renderer) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n InlineEdit.prototype.closeEdit = function () {\n _super.prototype.closeEdit.call(this);\n };\n InlineEdit.prototype.addRecord = function (data, index) {\n _super.prototype.addRecord.call(this, data, index);\n };\n InlineEdit.prototype.endEdit = function () {\n _super.prototype.endEdit.call(this);\n };\n InlineEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n InlineEdit.prototype.deleteRecord = function (fieldname, data) {\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n InlineEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return InlineEdit;\n}(NormalEdit));\nexport { InlineEdit };\n","import * as events from '../base/constant';\nimport { GroupLazyLoadRenderer } from '../renderer/group-lazy-load-renderer';\nimport { RenderType } from '../base/enum';\n/**\n * Group lazy load class\n */\nvar LazyLoadGroup = /** @class */ (function () {\n /**\n * Constructor for Grid group lazy load module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n function LazyLoadGroup(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n LazyLoadGroup.prototype.getModuleName = function () {\n return 'lazyLoadGroup';\n };\n /**\n * @returns {void}\n * @hidden\n */\n LazyLoadGroup.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n LazyLoadGroup.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialLoad, this.instantiateRenderer);\n this.parent.off(events.destroy, this.destroy);\n };\n LazyLoadGroup.prototype.instantiateRenderer = function () {\n if (this.parent.height === 'auto') {\n this.parent.height = this.parent.pageSettings.pageSize * this.parent.getRowHeight();\n }\n var renderer = this.serviceLocator.getService('rendererFactory');\n if (this.parent.groupSettings.enableLazyLoading) {\n renderer.addRenderer(RenderType.Content, new GroupLazyLoadRenderer(this.parent, this.serviceLocator));\n }\n if (this.parent.enableVirtualization) {\n this.parent.lazyLoadRender = new GroupLazyLoadRenderer(this.parent, this.serviceLocator);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n LazyLoadGroup.prototype.destroy = function () {\n this.removeEventListener();\n };\n return LazyLoadGroup;\n}());\nexport { LazyLoadGroup };\n","/**\n *\n * `Logger` class\n */\nimport { isNullOrUndefined, L10n, isUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil, DataManager } from '@syncfusion/ej2-data';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation/grid';\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/';\nvar WARNING = '[EJ2Grid.Warning]';\nvar ERROR = '[EJ2Grid.Error]';\nvar INFO = '[EJ2Grid.Info]';\nvar Logger = /** @class */ (function () {\n function Logger(parent) {\n this.parent = parent;\n this.parent.on('initial-end', this.patchadaptor, this);\n }\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n // eslint-disable-next-line no-console\n console[item.logType](item.generateMessage(args, this.parent, cOp.options));\n }\n }\n };\n Logger.prototype.patchadaptor = function () {\n var adaptor = this.parent.getDataModule().dataManager.adaptor;\n var original = adaptor.beforeSend;\n if (original) {\n adaptor.beforeSend = function (dm, request, settings) {\n original.call(adaptor, dm, request, settings);\n };\n }\n };\n Logger.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('initial-end', this.patchadaptor);\n };\n return Logger;\n}());\nexport { Logger };\nexport var detailLists = {\n // eslint-disable-next-line camelcase\n module_missing: {\n type: 'module_missing',\n logType: 'warn',\n check: function (args, parent) {\n var injected = parent.getInjectedModules().map(function (m) { return m.prototype.getModuleName(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var modules = parent.requiredModules().map(function (m) { return m.member; })\n .filter(function (name) { return injected.indexOf(name) === -1; });\n return { success: modules.filter(function (m) { return m !== 'resize'; }).length > 0, options: modules };\n },\n generateMessage: function (args, parent, modules) {\n modules = modules.filter(function (m) { return m !== 'resize'; })\n .reduce(function (prev, cur) { return prev + (\"* \" + cur + \"\\n\"); }, '');\n return WARNING + ': MODULES MISSING\\n' + 'The following modules are not injected:.\\n' +\n (\"\" + modules) +\n (\"Refer to \" + BASE_DOC_URL + \"/module.html for documentation on importing feature modules.\");\n }\n },\n // eslint-disable-next-line camelcase\n promise_enabled: {\n type: 'promise_enabled',\n logType: 'error',\n check: function () {\n return { success: typeof Promise === 'undefined' };\n },\n generateMessage: function () {\n return ERROR + ': PROMISE UNDEFINED\\n' +\n 'Promise object is not present in the global environment,' +\n 'please use polyfil to support Promise object in your environment.\\n' +\n (\"Refer to \" + DOC_URL + \"/base/browser.html?#required-polyfills for more information.\");\n }\n },\n // eslint-disable-next-line camelcase\n primary_column_missing: {\n type: 'primary_column_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' + 'Editing is enabled but primary key column is not specified.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n selection_key_missing: {\n type: 'selection_key_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.selectionSettings.persistSelection &&\n parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' +\n 'selectionSettings.persistSelection property is enabled. It requires one primary key column to persist selection.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n actionfailure: {\n type: 'actionfailure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function (args, parent) {\n var message = '';\n var formatError = formatErrorHandler(args, parent);\n var ajaxError = ajaxErrorHandler(args, parent);\n if (ajaxError !== '') {\n message = ajaxError;\n }\n else if (formatError !== '') {\n message = formatError;\n }\n else {\n message = args.error;\n }\n return WARNING + ': ' + message;\n }\n },\n // eslint-disable-next-line camelcase\n locale_missing: {\n type: 'locale_missing',\n logType: 'warn',\n check: function (args, parent) {\n var lObj = DataUtil.getObject(\"locale.\" + parent.locale + \".grid\", L10n);\n return { success: parent.locale !== 'en-US' && isNullOrUndefined(lObj) };\n },\n generateMessage: function (args, parent) {\n return WARNING + ': LOCALE CONFIG MISSING\\n' + (\"Locale configuration for '\" + parent.locale + \"' is not provided.\\n\") +\n (\"Refer to \" + BASE_DOC_URL + \"/globalization-and-localization.html?#localization \\n for documentation on setting locale configuration.\");\n }\n },\n limitation: {\n type: 'limitation',\n logType: 'warn',\n check: function (args, parent) {\n var name = args;\n var opt;\n switch (name) {\n case 'freeze':\n opt = {\n success: parent.allowGrouping || !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid)\n || !isUndefined(parent.rowTemplate) || parent.enableVirtualization,\n options: { name: 'freeze' }\n };\n break;\n case 'virtualization':\n opt = {\n success: !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid) || parent.frozenRows !== 0\n || parent.frozenColumns !== 0,\n options: { name: 'virtualization' }\n };\n break;\n default:\n opt = { success: false };\n break;\n }\n return opt;\n },\n generateMessage: function (args, parent, options) {\n var name = options.name;\n var opt;\n switch (name) {\n case 'freeze':\n opt = 'Frozen rows and columns do not support the following features:\\n' +\n '* Virtualization\\n' +\n '* Row Template\\n' +\n '* Details Template\\n' +\n '* Hierarchy Grid\\n' +\n '* Grouping';\n break;\n case 'virtualization':\n opt = 'Virtualization does not support the following features.\\n' +\n '* Freeze rows and columns.\\n' +\n '* Details Template.\\n' +\n '* Hierarchy Grid.\\n';\n break;\n default:\n opt = '';\n break;\n }\n return WARNING + (\": \" + name.toUpperCase() + \" LIMITATIONS\\n\") + opt;\n }\n },\n // eslint-disable-next-line camelcase\n check_datasource_columns: {\n type: 'check_datasource_columns',\n logType: 'warn',\n check: function (args, parent) {\n return { success: !(parent.columns.length ||\n (parent.dataSource instanceof DataManager) || parent.dataSource.length) };\n },\n generateMessage: function () {\n return WARNING + ': GRID CONFIG MISSING\\n' + 'dataSource and columns are not provided in the grid. ' +\n 'At least one of either must be provided for grid configuration.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns.html for documentation on configuring the grid data and columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n virtual_height: {\n type: 'virtual_height',\n logType: 'error',\n check: function (args, parent) {\n return { success: isNullOrUndefined(parent.height) || parent.height === 'auto' };\n },\n generateMessage: function () {\n return ERROR + ': GRID HEIGHT MISSING \\n' + 'height property is required to use virtualization.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/virtual.html for documentation on configuring the virtual grid.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_remote_edit: {\n type: 'grid_remote_edit',\n logType: 'error',\n check: function (args) {\n return { success: Array.isArray(args) || Array.isArray(args.result) };\n },\n generateMessage: function () {\n return ERROR + ': RETRUN VALUE MISSING \\n' +\n 'Remote service returns invalid data. \\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/edit.html for documentation on configuring editing with remote data.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_sort_comparer: {\n type: 'grid_sort_comparer',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.getDataModule().isRemote() };\n },\n generateMessage: function () {\n return WARNING + ': SORT COMPARER NOT WORKING \\n' + 'Sort comparer will not work with remote data.' +\n (\"Refer to \" + BASE_DOC_URL + \"/sorting/#custom-sort-comparer for documentation on using the sort comparer.\");\n }\n },\n // eslint-disable-next-line camelcase\n resize_min_max: {\n type: 'resize_min_max',\n logType: 'info',\n check: function (args) {\n return { success: (args.column.minWidth && args.column.minWidth >= args.width) ||\n (args.column.maxWidth && args.column.maxWidth <= args.width) };\n },\n generateMessage: function () {\n return INFO + ': RESIZING COLUMN REACHED MIN OR MAX \\n' + 'The column resizing width is at its min or max.';\n }\n },\n // eslint-disable-next-line camelcase\n action_disabled_column: {\n type: 'action_disabled_column',\n logType: 'info',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'reorder':\n if (isNullOrUndefined(args.destColumn)) {\n fn = \"reordering action is disabled for the \" + args.column.headerText + \" column\";\n }\n else {\n fn = \"reordering action is disabled for the \" + (args.column.allowReordering ?\n args.destColumn.headerText : args.column.headerText) + \" column\";\n }\n break;\n case 'group':\n fn = \"grouping action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'filter':\n fn = \"filtering action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'sort':\n fn = \"sorting action is disabled for the \" + args.columnName + \" column.\";\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": ACTION DISABLED \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n exporting_begin: {\n type: 'exporting_begin',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG INPROGRESS \\n Grid \" + options.args + \"ing is in progress\");\n }\n },\n // eslint-disable-next-line camelcase\n exporting_complete: {\n type: 'exporting_complete',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG COMPLETED \\n Grid \" + options.args + \"ing is complete\");\n }\n },\n // eslint-disable-next-line camelcase\n foreign_key_failure: {\n type: 'foreign_key_failure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function () {\n return ERROR + ': FOREIGNKEY CONFIG \\n Grid foreign key column needs a valid data source/service.' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns/#foreign-key-column for documentation on configuring foreign key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n initial_action: {\n type: 'initial_action',\n logType: 'error',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'group':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to group the column';\n break;\n case 'filter':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to filter the column.';\n break;\n case 'sort':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to sort the column.';\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": INITIAL ACTION FAILURE \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n frozen_rows_columns: {\n type: 'frozen_rows_columns',\n logType: 'error',\n check: function (args, parent) {\n return { success: parent.getColumns().length <= parent.frozenColumns || parent.frozenRows >= parent.currentViewData.length };\n },\n generateMessage: function (args, parent) {\n return ERROR + (\": OUT OF RANGE ERROR-\\n \" + (parent.getColumns().length <= parent.frozenColumns ? 'FROZEN COLUMNS,' : '')) +\n ((parent.frozenRows >= parent.currentViewData.length ? 'FROZEN ROWS' : '') + \" invalid\");\n }\n },\n // eslint-disable-next-line camelcase\n column_type_missing: {\n type: 'column_type_missing',\n logType: 'error',\n check: function (args) {\n return { success: isNullOrUndefined(args.column.type), options: args.column.headerText };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": COLUMN TYPE MISSING-\\n \" + options + \" column type was invalid or not defined.\") +\n (\"Please go through below help link: \" + DOC_URL + \"/grid/columns/#column-type\");\n }\n },\n // eslint-disable-next-line camelcase\n datasource_syntax_mismatch: {\n type: 'datasource_syntax_mismatch',\n logType: 'warn',\n check: function (args) {\n return { success: args.dataState.dataSource && !(args.dataState.dataSource instanceof DataManager ||\n 'result' in args.dataState.dataSource || args.dataState.dataSource instanceof Array) &&\n !(isNullOrUndefined(args.dataState.dataStateChange)) };\n },\n generateMessage: function () {\n return WARNING + ': DATASOURCE SYNTAX WARNING\\n' +\n 'DataSource should be in the form of {result: Object[], count: number}' +\n 'when dataStateChangeEvent used';\n }\n }\n};\nvar formatErrorHandler = function (args) {\n var error = args.error;\n if (error.indexOf && error.indexOf('Format options') !== 0) {\n return '';\n }\n return 'INVALID FORMAT\\n' +\n 'For more information, refer to the following documentation links:\\n' +\n (\"Number format: \" + DOC_URL + \"/base/intl.html?#supported-format-string.\\n\") +\n (\"Date format: \" + DOC_URL + \"/base/intl.html?#manipulating-datetime.\\n\") +\n (\"Message: \" + error);\n};\nvar ajaxErrorHandler = function (args) {\n var error = DataUtil.getObject('error.error', args);\n if (isNullOrUndefined(error)) {\n return '';\n }\n var jsonResult = '';\n try {\n jsonResult = JSON.parse(error.responseText);\n }\n catch (_a) {\n jsonResult = '';\n }\n return 'XMLHTTPREQUEST FAILED\\n' +\n (\"Url: \" + error.responseURL + \"\\n\") +\n (\"Status: \" + error.status + \" - \" + error.statusText + \"\\n\") +\n (\"\" + (jsonResult !== '' ? 'Message: ' + jsonResult : ''));\n};\n","import { extend, select } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive, refreshForeignData, getObject, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n *\n * @hidden\n */\nvar NormalEdit = /** @class */ (function () {\n function NormalEdit(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n NormalEdit.prototype.clickHandler = function (e) {\n var target = e.target;\n var gObj = this.parent;\n if ((((parentsUntil(target, literals.gridContent) &&\n parentsUntil(parentsUntil(target, literals.gridContent), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, literals.headerContent))) && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, literals.rowCell)\n ? parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n };\n NormalEdit.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, literals.rowCell) && this.parent.editSettings.allowEditOnDblClick) {\n this.parent.editModule.startEdit(parentsUntil(e.target, literals.row));\n }\n };\n /**\n * The function used to trigger editComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.editComplete = function (e) {\n this.parent.isEdit = false;\n var action = 'action';\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[\"\" + action] !== 'edit') {\n this.parent.selectRow(0);\n }\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'save',\n type: events.actionComplete\n }));\n break;\n case 'delete':\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'delete',\n type: events.actionComplete\n }));\n if (!this.parent.isCheckBoxSelection) {\n this.parent.selectRow(this.editRowIndex);\n }\n break;\n }\n };\n NormalEdit.prototype.getEditArgs = function (editedData, rowObj, isScroll) {\n var primaryKeys = this.parent.getPrimaryKeyFieldNames();\n var primaryKeyValues = [];\n for (var i = 0; i < primaryKeys.length; i++) {\n primaryKeyValues.push(getObject(primaryKeys[parseInt(i.toString(), 10)], editedData));\n }\n var args = {\n primaryKey: primaryKeys, primaryKeyValue: primaryKeyValues, requestType: 'beginEdit',\n rowData: editedData, rowIndex: this.rowIndex, type: 'edit', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData, target: undefined, isScroll: isScroll\n };\n return args;\n };\n NormalEdit.prototype.startEdit = function (tr) {\n var _this = this;\n var gObj = this.parent;\n this.rowIndex = this.editRowIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n if (gObj.enableVirtualization || gObj.enableInfiniteScrolling) {\n var selector = '.e-row[data-rowindex=\"' + this.rowIndex + '\"]';\n var virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n var e = { data: undefined, index: this.rowIndex, isScroll: false };\n this.parent.notify(events.virtualScrollEditActionBegin, e);\n if (isGroupAdaptive(gObj)) {\n var rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (!this.previousData && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.previousData = e.data;\n }\n else if (!this.parent.enableVirtualization) {\n this.previousData = extend({}, {}, gObj.getCurrentViewRecords()[this.rowIndex], true);\n }\n var editedData = extend({}, {}, e.data || this.previousData, true);\n this.uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(this.uid);\n var args = this.getEditArgs(editedData, rowObj, e.isScroll);\n args.row = tr;\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.beginEdit, args, function (begineditargs) {\n begineditargs.type = 'actionBegin';\n gObj.trigger(events.actionBegin, begineditargs, function (editargs) {\n if (!editargs.cancel) {\n _this.inlineEditHandler(editargs, tr);\n }\n });\n });\n }\n else {\n this.inlineEditHandler(args, tr);\n }\n };\n NormalEdit.prototype.inlineEditHandler = function (editargs, tr) {\n var gObj = this.parent;\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n this.renderer.update(editargs);\n this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n editargs.type = 'actionComplete';\n gObj.trigger(events.actionComplete, editargs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, editargs.form.ej2_instances[0].rules);\n }\n this.args = editargs;\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n };\n NormalEdit.prototype.updateRow = function (index, data) {\n var _this = this;\n var gObj = this.parent;\n this.editRowIndex = index;\n var args = {\n requestType: 'save', action: 'edit', type: events.actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[parseInt(index.toString(), 10)],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n if (gObj.enableInfiniteScrolling) {\n this.uid = args.row.getAttribute('data-uid');\n var index_1 = parseInt(args.row.getAttribute('data-rowindex'), 10);\n this.parent.notify(events.refreshInfiniteEditrowindex, { index: index_1 });\n }\n gObj.notify(events.updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n if (!gObj.enableInfiniteScrolling) {\n gObj.refresh();\n }\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var isValid = gObj.editModule.editFormValidate();\n var validationArgs = {\n prevData: this.previousData, isValid: true, editIdx: this.editRowIndex, addIdx: this.addedRowIndex\n };\n gObj.notify(events.validateVirtualForm, validationArgs);\n return (isValid && validationArgs.isValid);\n };\n NormalEdit.prototype.endEdit = function () {\n var _this = this;\n var gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n var editedData = extend({}, {}, this.previousData, true);\n var args = extend(this.args, {\n requestType: 'save', type: events.actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n var index = gObj.getFrozenMode() === 'Right' ? 1 : 0;\n var isDlg = gObj.editSettings.mode === 'Dialog';\n var dlgWrapper = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n var dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.element.getElementsByClassName('e-gridform')[parseInt(index.toString(), 10)];\n var data = {\n virtualData: extend({}, {}, this.previousData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && Object.keys(data.virtualData).length) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n if (gObj.isFrozenGrid() && gObj.editSettings.mode === 'Normal') {\n var mhdrFrm = gObj.getMovableVirtualHeader().querySelector('.e-gridform');\n var mCntFrm = gObj.getMovableVirtualContent().querySelector('.e-gridform');\n var mvblEle = [mhdrFrm || mCntFrm];\n var frHdrFrm = void 0;\n var frCntFrm = void 0;\n var frEle = [];\n if (gObj.getFrozenMode() === literals.leftRight) {\n frHdrFrm = gObj.getFrozenRightHeader().querySelector('.e-gridform');\n frCntFrm = gObj.getFrozenRightContent().querySelector('.e-gridform');\n frEle = [frHdrFrm || frCntFrm];\n }\n gridActionHandler(this.parent, function (tableName, elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var ele = elements_1[_i];\n if (ele) {\n editedData = gObj.editModule.getCurrentEditedData(ele, editedData);\n }\n }\n }, [[], mvblEle, frEle]);\n }\n var eleLength = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow)).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.getElementsByClassName(literals.editedRow).length : eleLength) {\n args.action = 'edit';\n gObj.trigger(events.actionBegin, args, function (endEditArgs) {\n if (endEditArgs.cancel) {\n return;\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Spinner') {\n gObj.showSpinner();\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n _this.parent.showMaskRow();\n }\n gObj.notify(events.updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(events.virtualScrollEditSuccess, {});\n gObj.notify(events.modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n }\n gObj.editModule.resetMovableContentValidation();\n };\n NormalEdit.prototype.destroyElements = function () {\n var gObj = this.parent;\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n this.parent.notify(events.dialogDestroy, {});\n };\n NormalEdit.prototype.editHandler = function (args) {\n var _this = this;\n if (args.promise) {\n args.promise.then(function (e) { return _this.edSucc(e, args); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n this.editSuccess(args.data, args);\n }\n };\n NormalEdit.prototype.edSucc = function (e, args) {\n this.editSuccess(e, args);\n };\n NormalEdit.prototype.edFail = function (e) {\n this.editFailure(e);\n };\n NormalEdit.prototype.updateCurrentViewData = function (data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n };\n NormalEdit.prototype.requestSuccess = function (args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add' &&\n this.parent.selectionModule) {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n };\n NormalEdit.prototype.editSuccess = function (e, args) {\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n var rowData = 'rowData';\n args.data = extend({}, extend({}, args[\"\" + rowData], args.data), e);\n }\n this.requestSuccess(args);\n this.parent.trigger(events.beforeDataBound, args);\n args.type = events.actionComplete;\n this.parent.isEdit = false;\n this.refreshRow(args.data);\n this.parent.notify(events.virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n this.editRowIndex = null;\n if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n this.parent.trigger(events.actionComplete, args);\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection) && !this.parent.selectionSettings.checkboxOnly) {\n if (this.parent.editSettings.mode !== 'Dialog') {\n this.parent.selectRow(this.rowIndex > -1 ? this.rowIndex : this.editRowIndex);\n }\n }\n if (this.parent.aggregates.length && this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length\n && (this.parent.groupModule.getGroupAggregateTemplates(true).length\n || this.parent.groupModule.getGroupAggregateTemplates(false).length)) {\n return;\n }\n this.parent.removeMaskRow();\n this.parent.hideSpinner();\n };\n NormalEdit.prototype.closeForm = function () {\n if (!this.cloneRow && this.parent.isEdit) {\n this.stopEditStatus();\n }\n if (this.cloneRow) {\n this.cloneRow.remove();\n this.cloneRow = null;\n this.originalRow.classList.remove('e-hiddenrow');\n }\n if (this.parent.isFrozenGrid() && this.cloneFrozen) {\n this.cloneFrozen.remove();\n this.frozen.classList.remove('e-hiddenrow');\n }\n };\n NormalEdit.prototype.blazorTemplate = function () {\n var cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (var i = 0; i < cols.length; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n };\n NormalEdit.prototype.editFailure = function (e) {\n this.parent.removeMaskRow();\n this.parent.trigger(events.actionFailure, ({ error: e }));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n };\n NormalEdit.prototype.needRefresh = function () {\n var refresh = true;\n var editedRow = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow) {\n refresh = false;\n }\n return refresh;\n };\n NormalEdit.prototype.refreshRow = function (data) {\n var frzCols = this.parent.isFrozenGrid();\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(events.refreshVirtualCache, { data: data });\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row.refresh(rowObj, this.parent.getColumns(), true);\n }\n var tr = [].slice.call(this.parent.element.querySelectorAll('[data-rowindex=\"' + rowObj.index + '\"]'));\n if (frzCols && tr.length) {\n for (var i = 0; i < tr.length; i++) {\n var rowUid = tr[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (rowUid !== this.uid) {\n rowObj = this.parent.getRowObjectFromUID(rowUid);\n rowObj.changes = data;\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n row.refresh(rowObj, this.parent.getColumns(), true);\n this.parent.editModule.checkLastRow(tr[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n };\n NormalEdit.prototype.closeEdit = function () {\n var _this = this;\n if (!this.parent.isEdit) {\n return;\n }\n var gObj = this.parent;\n var args = extend(this.args, {\n requestType: 'cancel', type: events.actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(events.virtualScrollEditCancel, args);\n this.blazorTemplate();\n gObj.trigger(events.actionBegin, args, function (closeEditArgs) {\n if (closeEditArgs.cancel) {\n return;\n }\n if (_this.parent.editSettings.mode === 'Dialog') {\n _this.parent.notify(events.dialogDestroy, {});\n }\n gObj.isEdit = false;\n _this.stopEditStatus();\n closeEditArgs.type = events.actionComplete;\n if (gObj.editSettings.mode !== 'Dialog') {\n _this.refreshRow(closeEditArgs.data);\n }\n var isLazyLoad = gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length\n && !gObj.getContentTable().querySelector('tr.e-emptyrow');\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row') && !isLazyLoad) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(_this.rowIndex);\n }\n gObj.editModule.resetMovableContentValidation();\n gObj.trigger(events.actionComplete, closeEditArgs);\n });\n };\n NormalEdit.prototype.addRecord = function (data, index) {\n var _this = this;\n var gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(events.modelChanged, {\n requestType: 'save', type: events.actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n var cols = gObj.getColumns();\n var rowData = { virtualData: {}, isScroll: false };\n this.parent.notify(events.getVirtualData, rowData);\n for (var i = 0; i < cols.length; i++) {\n if (rowData.isScroll && cols[parseInt(i.toString(), 10)].getFreezeTableName() !== 'movable') {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].field) {\n if (cols[parseInt(i.toString(), 10)].type === 'string') {\n cols[parseInt(i.toString(), 10)].defaultValue = this.parent.sanitize(cols[parseInt(i.toString(), 10)].defaultValue);\n }\n DataUtil.setValue(cols[parseInt(i.toString(), 10)].field, cols[parseInt(i.toString(), 10)].defaultValue, this.previousData);\n }\n }\n var args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: events.actionBegin, index: index,\n rowData: this.previousData, target: undefined, isScroll: rowData.isScroll\n };\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.actionBegin, args, function (addArgs) {\n if (addArgs.cancel) {\n return;\n }\n _this.inlineAddHandler(addArgs);\n });\n }\n else {\n this.inlineAddHandler(args);\n }\n };\n NormalEdit.prototype.inlineAddHandler = function (addArgs) {\n var gObj = this.parent;\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = events.actionComplete;\n addArgs.row = gObj.element.querySelector('.' + literals.addedRow);\n gObj.trigger(events.actionComplete, addArgs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, addArgs.form.ej2_instances[0].rules);\n }\n this.args = addArgs;\n };\n NormalEdit.prototype.deleteRecord = function (fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n var gObj = this.parent;\n var dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n var _loop_1 = function (i) {\n var _a;\n var tmpRecord;\n var contained = gObj.currentViewData.some(function (record) {\n tmpRecord = record;\n return data[parseInt(i.toString(), 10)] === getObject(fieldname, record) || data[parseInt(i.toString(), 10)] === record;\n });\n data[parseInt(i.toString(), 10)] = contained ? tmpRecord : data[parseInt(i.toString(), 10)][\"\" + fieldname] ?\n data[parseInt(i.toString(), 10)] : (_a = {}, _a[fieldname] = data[parseInt(i.toString(), 10)], _a);\n };\n for (var i = 0; i < dataLen; i++) {\n _loop_1(i);\n }\n }\n var args = {\n requestType: 'delete', type: events.actionBegin, foreignKeyData: {},\n data: data ? data : this.parent.getSelectedRecords(), tr: this.parent.getSelectedRows(), cancel: false\n };\n if (!isNullOrUndefined(this.parent.commandDelIndex)) {\n args.data[0] =\n this.parent.getRowObjectFromUID(this.parent.getRowByIndex(this.parent.commandDelIndex).getAttribute('data-uid')).data;\n }\n if (this.parent.enableVirtualization && args.data.length > 1) {\n var uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n args.data = [this.parent.getRowObjectFromUID(uid).data];\n }\n this.parent.notify(events.modelChanged, args);\n };\n NormalEdit.prototype.stopEditStatus = function () {\n var gObj = this.parent;\n var addElements = [].slice.call(gObj.element.getElementsByClassName(literals.addedRow));\n var editElements = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow));\n for (var i = 0; i < addElements.length; i++) {\n remove(addElements[parseInt(i.toString(), 10)]);\n }\n for (var i = 0; i < editElements.length; i++) {\n editElements[parseInt(i.toString(), 10)].classList.remove(literals.editedRow);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.crudAction, handler: this.editHandler },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.click, handler: this.clickHandler },\n { event: events.recordAdded, handler: this.requestSuccess },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.deleteComplete, handler: this.editComplete },\n { event: events.saveComplete, handler: this.editComplete },\n { event: events.rowModeChange, handler: this.closeEdit },\n { event: events.closeInline, handler: this.closeForm }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.destroy = function () {\n this.removeEventListener();\n this.renderer.destroy();\n };\n return NormalEdit;\n}());\nexport { NormalEdit };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent, addRemoveEventListener, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n this.isCancel = false;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n pagerObj.cssClass = this.parent.cssClass ? this.parent.cssClass : '';\n this.pagerObj = new Pager(pagerObj, undefined, this.parent);\n this.pagerObj.hasParent = true;\n this.pagerObj.on(events.pagerRefresh, this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n else {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table');\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[parseInt(i.toString(), 10)]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList.length; j++) {\n var element = this.element.querySelector(classList[parseInt(j.toString(), 10)]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @param {number} pageSize - specifies the page size\n * @returns {void}\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n *\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n if (this.pagerObj.isAllPage && ((e.action === 'add' && e.requestType === 'save') || (e.requestType === 'batchsave'))) {\n this.pagerObj.setProperties({ pageSize: e.count }, true);\n }\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[\"\" + prop] = newProp[\"\" + prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving && !this.isCancel) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.pageSize = e.oldProp.pageSize;\n gObj.pageSettings.pageSize = e.newProp.pageSize;\n }\n else if (e.currentPage) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, pageSize: gObj.pageSettings.pageSize, type: events.actionBegin\n };\n if (!this.isCancel) {\n this.pageSettings.currentPage = e.currentPage;\n this.parent.notify(events.modelChanged, args);\n }\n if (args.cancel) {\n e.cancel = true;\n this.pageSettings.currentPage = prevPage;\n this.pagerObj.currentPage = prevPage;\n this.isCancel = true;\n return;\n }\n this.isCancel = false;\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.addEventListener(literals.create, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: events.initialLoad, handler: this.handlers.load },\n { event: events.initialEnd, handler: this.handlers.end },\n { event: events.dataReady, handler: this.handlers.ready },\n { event: events.pageComplete, handler: this.handlers.complete },\n { event: events.uiUpdate, handler: this.handlers.updateLayout },\n { event: events.inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: events.keyPressed, handler: this.handlers.keyPress },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return (this.parent.isReact || this.parent.isVue) && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n var result = void 0;\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n if (this.parent.isReact) {\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n else {\n result = this.pagerObj.templateFn(data, this.parent, 'pagerTemplate');\n appendChildren(this.pagerObj.element, result);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.removeEventListener(literals.create, this.handlers.created);\n }\n this.parent.off(events.pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","/**\n * Used to `write a string` into output file.\n * @private\n */\nvar PdfWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfWriter` class.\n * @private\n */\n function PdfWriter(stream) {\n this.streamWriter = stream;\n }\n Object.defineProperty(PdfWriter.prototype, \"document\", {\n //properties\n /**\n * Gets and Sets the `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"position\", {\n /**\n * Gets the `position`.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"length\", {\n /**\n * Gets the `length` of the stream'.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"stream\", {\n /**\n * Gets the `stream`.\n * @private\n */\n get: function () {\n var result = this.streamWriter;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n //public Methods\n /**\n * `Writes the specified data`.\n * @private\n */\n PdfWriter.prototype.write = function (overload) {\n var data = [];\n var tempOverload = overload;\n this.streamWriter.write(tempOverload);\n };\n return PdfWriter;\n}());\nexport { PdfWriter };\n","/**\n * @private\n * @hidden\n */\nexport function defaultToString(item) {\n // if (item === null) {\n // return 'COLLECTION_NULL';\n // } else if (typeof item === 'undefined') {\n // return 'COLLECTION_UNDEFINED';\n // } else if (Object.prototype.toString.call(item) === '[object String]') {\n if (Object.prototype.toString.call(item) === '[object String]') {\n return '$s' + item;\n }\n else {\n return '$o' + item.toString();\n }\n}\n","/**\n * Dictionary.ts class for EJ2-PDF\n * @private\n * @hidden\n */\nimport { defaultToString } from './utils';\n/**\n * @private\n * @hidden\n */\nvar Dictionary = /** @class */ (function () {\n /**\n * @private\n * @hidden\n */\n function Dictionary(toStringFunction) {\n this.table = {};\n this.nElements = 0;\n this.toStr = toStringFunction || defaultToString;\n }\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.getValue = function (key) {\n var pair = this.table['$' + this.toStr(key)];\n if (typeof pair === 'undefined') {\n return undefined;\n }\n return pair.value;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.setValue = function (key, value) {\n // if (typeof key === 'undefined' || typeof value === 'undefined') {\n // return undefined;\n // }\n var ret;\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement === 'undefined') {\n this.nElements++;\n ret = undefined;\n // }\n this.table[k] = {\n key: key,\n value: value\n };\n return ret;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.remove = function (key) {\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement !== 'undefined') {\n delete this.table[k];\n this.nElements--;\n return previousElement.value;\n // }\n // return undefined;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.keys = function () {\n var keysArray = [];\n var namesOfKeys = Object.keys(this.table);\n for (var index1 = 0; index1 < namesOfKeys.length; index1++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfKeys[index1])) {\n var pair1 = this.table[namesOfKeys[index1]];\n keysArray.push(pair1.key);\n // }\n }\n return keysArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.values = function () {\n var valuesArray = [];\n var namesOfValues = Object.keys(this.table);\n for (var index2 = 0; index2 < namesOfValues.length; index2++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfValues[index2])) {\n var pair2 = this.table[namesOfValues[index2]];\n valuesArray.push(pair2.value);\n // }\n }\n return valuesArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.containsKey = function (key) {\n var retutnValue = true;\n if (typeof this.getValue(key) === 'undefined') {\n retutnValue = true;\n }\n else {\n retutnValue = false;\n }\n return !retutnValue;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.clear = function () {\n this.table = {};\n this.nElements = 0;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.size = function () {\n return this.nElements;\n };\n return Dictionary;\n}()); // End of dictionary\nexport { Dictionary };\n","/**\n * public Enum for `CompositeFontType`.\n * @private\n */\nexport var ObjectStatus;\n(function (ObjectStatus) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Registered`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"Registered\"] = 1] = \"Registered\";\n})(ObjectStatus || (ObjectStatus = {}));\n","/**\n * PdfMainObjectCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\nimport { ObjectStatus } from './enum';\n/**\n * The collection of all `objects` within a PDF document.\n * @private\n */\nvar PdfMainObjectCollection = /** @class */ (function () {\n function PdfMainObjectCollection() {\n //Fields\n /**\n * The collection of the `indirect objects`.\n * @default []\n * @private\n */\n this.objectCollections = [];\n /**\n * The collection of the `Indirect objects`.\n * @default new Dictionary()\n * @private\n */\n this.mainObjectCollection = new Dictionary();\n /**\n * The collection of `primitive objects`.\n * @private\n */\n this.primitiveObjectCollection = new Dictionary();\n }\n Object.defineProperty(PdfMainObjectCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.objectCollections.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the value of `ObjectInfo` from object collection.\n * @private\n */\n PdfMainObjectCollection.prototype.items = function (index) {\n return this.objectCollections[index];\n };\n Object.defineProperty(PdfMainObjectCollection.prototype, \"outIsNew\", {\n //Methods\n /**\n * Specifies the value of `IsNew`.\n * @private\n */\n get: function () {\n return this.isNew;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element.\n * @private\n */\n PdfMainObjectCollection.prototype.add = function (element) {\n var objInfo = new ObjectInfo(element);\n this.objectCollections.push(objInfo);\n if (!this.primitiveObjectCollection.containsKey(element)) {\n this.primitiveObjectCollection.setValue(element, this.objectCollections.length - 1);\n }\n element.position = this.index = this.objectCollections.length - 1;\n element.status = ObjectStatus.Registered;\n };\n /**\n * `Looks` through the collection for the object specified.\n * @private\n */\n PdfMainObjectCollection.prototype.lookFor = function (obj) {\n var index = -1;\n if (obj.position !== -1) {\n return obj.position;\n }\n if (this.primitiveObjectCollection.containsKey(obj) && this.count === this.primitiveObjectCollection.size()) {\n index = this.primitiveObjectCollection.getValue(obj);\n }\n else {\n for (var i = this.count - 1; i >= 0; i--) {\n var oi = this.objectCollections[i];\n if (oi.object === obj) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * Gets the `reference of the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.getReference = function (index, isNew) {\n this.index = this.lookFor(index);\n var reference;\n this.isNew = false;\n var oi = this.objectCollections[this.index];\n reference = oi.reference;\n var obj = { reference: reference, wasNew: isNew };\n return obj;\n };\n /**\n * Tries to set the `reference to the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.trySetReference = function (obj, reference, found) {\n var result = true;\n found = true;\n this.index = this.lookFor(obj);\n var oi = this.objectCollections[this.index];\n oi.setReference(reference);\n return result;\n };\n PdfMainObjectCollection.prototype.destroy = function () {\n for (var _i = 0, _a = this.objectCollections; _i < _a.length; _i++) {\n var obj = _a[_i];\n if (obj !== undefined) {\n obj.pdfObject.position = -1;\n obj.pdfObject.isSaving = undefined;\n obj.pdfObject.objectCollectionIndex = undefined;\n obj.pdfObject.position = undefined;\n }\n }\n this.objectCollections = [];\n this.mainObjectCollection = new Dictionary();\n this.primitiveObjectCollection = new Dictionary();\n };\n return PdfMainObjectCollection;\n}());\nexport { PdfMainObjectCollection };\nvar ObjectInfo = /** @class */ (function () {\n function ObjectInfo(obj, reference) {\n this.pdfObject = obj;\n this.pdfReference = reference;\n }\n Object.defineProperty(ObjectInfo.prototype, \"object\", {\n //Properties\n /**\n * Gets the `object`.\n * @private\n */\n get: function () {\n return this.pdfObject;\n },\n set: function (value) {\n this.pdfObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ObjectInfo.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `reference`.\n * @private\n */\n ObjectInfo.prototype.setReference = function (reference) {\n this.pdfReference = reference;\n };\n return ObjectInfo;\n}());\nexport { ObjectInfo };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfDictionary } from './pdf-dictionary';\nimport { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\nimport { PdfName } from './pdf-name';\nimport { PdfArray } from './pdf-array';\nimport { PdfReferenceHolder } from './pdf-reference';\nimport { CompressedStreamWriter } from '@syncfusion/ej2-compression';\n/**\n * `PdfStream` class is used to perform stream related primitive operations.\n * @private\n */\nvar PdfStream = /** @class */ (function (_super) {\n __extends(PdfStream, _super);\n function PdfStream(dictionary, data) {\n var _this = _super.call(this, dictionary) || this;\n //Constants\n /**\n * @hidden\n * @private\n */\n _this.dicPrefix = 'stream';\n /**\n * @hidden\n * @private\n */\n _this.dicSuffix = 'endstream';\n /**\n * Internal variable to hold `cloned object`.\n * @private\n */\n _this.clonedObject2 = null;\n /**\n * @hidden\n * @private\n */\n _this.bCompress = true;\n /**\n * @hidden\n * @private\n */\n _this.isImageStream = false;\n /**\n * @hidden\n * @private\n */\n _this.isFontStream = false;\n if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {\n _this.dataStream2 = [];\n _this.dataStream2 = data;\n _this.bCompress2 = false;\n }\n else {\n _this.dataStream2 = [];\n _this.bCompress2 = true;\n //Pending\n }\n return _this;\n }\n Object.defineProperty(PdfStream.prototype, \"internalStream\", {\n /**\n * Gets the `internal` stream.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isImage\", {\n /**\n * Gets or sets 'is image' flag.\n * @private\n */\n get: function () {\n return this.isImageStream;\n },\n set: function (value) {\n this.isImageStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isFont\", {\n /**\n * Gets or sets 'is font' flag.\n * @private\n */\n get: function () {\n return this.isFontStream;\n },\n set: function (value) {\n this.isFontStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"compress\", {\n /**\n * Gets or sets `compression` flag.\n * @private\n */\n get: function () {\n return this.bCompress;\n },\n set: function (value) {\n this.bCompress = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"data\", {\n /**\n * Gets or sets the `data`.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clear` the internal stream.\n * @private\n */\n PdfStream.prototype.clearStream = function () {\n this.internalStream = [];\n if (this.items.containsKey(this.dictionaryProperties.filter)) {\n this.remove(this.dictionaryProperties.filter);\n }\n this.bCompress = true;\n this.modify();\n };\n /**\n * `Writes` the specified string.\n * @private\n */\n PdfStream.prototype.write = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (text.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty string, text');\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * `Writes` the specified bytes.\n * @private\n */\n PdfStream.prototype.writeBytes = function (data) {\n if (data === null) {\n throw new Error('ArgumentNullException:data');\n }\n if (data.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty bytes, data');\n }\n var text = '';\n for (var i = 0; i < data.length; i++) {\n text += String.fromCharCode(data[i]);\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * Raises event `Cmap BeginSave`.\n * @private\n */\n PdfStream.prototype.onCmapBeginSave = function () {\n this.cmapBeginSave.sender.cmapBeginSave();\n };\n /**\n * Raises event `Font Program BeginSave`.\n * @private\n */\n PdfStream.prototype.onFontProgramBeginSave = function () {\n this.fontProgramBeginSave.sender.fontProgramBeginSave();\n };\n /**\n * `Compresses the content` if it's required.\n * @private\n */\n PdfStream.prototype.compressContent = function (data, writer) {\n if (this.bCompress) {\n var byteArray = [];\n for (var i = 0; i < data.length; i++) {\n byteArray.push(data.charCodeAt(i));\n }\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n // data = 'Hello World!!!';\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n data = sw.getCompressedString;\n this.addFilter(this.dictionaryProperties.flatedecode);\n }\n return data;\n };\n /**\n * `Adds a filter` to the filter array.\n * @private\n */\n PdfStream.prototype.addFilter = function (filterName) {\n var obj = this.items.getValue(this.dictionaryProperties.filter);\n if (obj instanceof PdfReferenceHolder) {\n var rh = obj;\n obj = rh.object;\n }\n var array = obj;\n var name = obj;\n if (name != null) {\n array = new PdfArray();\n array.insert(0, name);\n this.items.setValue(this.dictionaryProperties.filter, array);\n }\n name = new PdfName(filterName);\n if (array == null) {\n this.items.setValue(this.dictionaryProperties.filter, name);\n }\n else {\n array.insert(0, name);\n }\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfStream.prototype.save = function (writer) {\n if (typeof this.cmapBeginSave !== 'undefined') {\n this.onCmapBeginSave();\n }\n if (typeof this.fontProgramBeginSave !== 'undefined') {\n this.onFontProgramBeginSave();\n }\n var data = '';\n for (var i = 0; i < this.data.length; i++) {\n data = data + this.data[i];\n }\n if (data.length > 1 && !this.isImage && !this.isFont) {\n data = 'q\\r\\n' + data + 'Q\\r\\n';\n }\n data = this.compressContent(data, writer);\n var length = data.length;\n this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));\n _super.prototype.save.call(this, writer, false);\n writer.write(this.dicPrefix);\n writer.write(Operators.newLine);\n if (data.length > 0) {\n writer.write(data);\n }\n writer.write(Operators.newLine);\n writer.write(this.dicSuffix);\n writer.write(Operators.newLine);\n };\n /**\n * Converts `bytes to string`.\n * @private\n */\n PdfStream.bytesToString = function (byteArray) {\n var output = '';\n for (var i = 0; i < byteArray.length; i++) {\n output = output + String.fromCharCode(byteArray[i]);\n }\n return output;\n };\n return PdfStream;\n}(PdfDictionary));\nexport { PdfStream };\nvar SaveCmapEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveCmapEventHandler(sender) {\n this.sender = sender;\n }\n return SaveCmapEventHandler;\n}());\nexport { SaveCmapEventHandler };\nvar SaveFontProgramEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontProgramEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontProgramEventHandler;\n}());\nexport { SaveFontProgramEventHandler };\n","/**\n * `PdfString` class is used to perform string related primitive operations.\n * @private\n */\nexport var InternalEnum;\n(function (InternalEnum) {\n //Internals\n /**\n * public Enum for `ForceEncoding`.\n * @private\n */\n var ForceEncoding;\n (function (ForceEncoding) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Ascii`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Ascii\"] = 1] = \"Ascii\";\n /**\n * Specifies the type of `Unicode`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Unicode\"] = 2] = \"Unicode\";\n })(ForceEncoding = InternalEnum.ForceEncoding || (InternalEnum.ForceEncoding = {}));\n /**\n * public Enum for `SourceType`.\n * @private\n */\n var SourceType;\n (function (SourceType) {\n /**\n * Specifies the type of `StringValue`.\n * @private\n */\n SourceType[SourceType[\"StringValue\"] = 0] = \"StringValue\";\n /**\n * Specifies the type of `ByteBuffer`.\n * @private\n */\n SourceType[SourceType[\"ByteBuffer\"] = 1] = \"ByteBuffer\";\n })(SourceType || (SourceType = {}));\n})(InternalEnum || (InternalEnum = {}));\nvar PdfString = /** @class */ (function () {\n function PdfString(value) {\n /**\n * Value indicating whether the string was converted to hex.\n * @default false\n * @private\n */\n this.bHex = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position1 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject1 = null;\n /**\n * `Shows` if the data of the stream was decrypted.\n * @default false\n * @private\n */\n this.bDecrypted = false;\n /**\n * Shows if the data of the stream `was decrypted`.\n * @default false\n * @private\n */\n this.isParentDecrypted = false;\n /**\n * Gets a value indicating whether the object is `packed or not`.\n * @default false\n * @private\n */\n this.isPacked = false;\n /**\n * @hidden\n * @private\n */\n this.isFormField = false;\n /**\n * @hidden\n * @private\n */\n this.isColorSpace = false;\n /**\n * @hidden\n * @private\n */\n this.isHexString = true;\n if (typeof value === 'undefined') {\n this.bHex = false;\n }\n else {\n if (!(value.length > 0 && value[0] === '0xfeff')) {\n this.stringValue = value;\n this.data = [];\n for (var i = 0; i < value.length; ++i) {\n this.data.push(value.charCodeAt(i));\n }\n }\n }\n }\n Object.defineProperty(PdfString.prototype, \"hex\", {\n //Property\n /**\n * Gets a value indicating whether string is in `hex`.\n * @private\n */\n get: function () {\n return this.bHex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"value\", {\n /**\n * Gets or sets string `value` of the object.\n * @private\n */\n get: function () {\n return this.stringValue;\n },\n set: function (value) {\n this.stringValue = value;\n this.data = null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status1;\n },\n set: function (value) {\n this.status1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving1;\n },\n set: function (value) {\n this.isSaving1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index1;\n },\n set: function (value) {\n this.index1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position1;\n },\n set: function (value) {\n this.position1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"converted\", {\n /**\n * Gets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n get: function () {\n return this.bConverted;\n },\n /**\n * sets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n set: function (value) {\n this.bConverted = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"encode\", {\n /**\n * Gets value indicating whether we should convert data to Unicode.\n */\n get: function () {\n return this.bForceEncoding;\n },\n set: function (value) {\n this.bForceEncoding = value;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * Converts `bytes to string using hex format` for representing string.\n * @private\n */\n PdfString.bytesToHex = function (bytes) {\n if (bytes == null) {\n return '';\n }\n var builder = '';\n return builder;\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfString.prototype.save = function (writer) {\n if (writer === null) {\n throw new Error('ArgumentNullException : writer');\n }\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n writer.write(this.pdfEncode());\n }\n else {\n writer.write(PdfString.stringMark[0] + this.value + PdfString.stringMark[1]);\n }\n };\n PdfString.prototype.pdfEncode = function () {\n var result = '';\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n var data = this.escapeSymbols(this.value);\n for (var i = 0; i < data.length; i++) {\n result += String.fromCharCode(data[i]);\n }\n result = PdfString.stringMark[0] + result + PdfString.stringMark[1];\n }\n else {\n result = this.value;\n }\n return result;\n };\n PdfString.prototype.escapeSymbols = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n var currentData = value.charCodeAt(i);\n switch (currentData) {\n case 40:\n case 41:\n data.push(92);\n data.push(currentData);\n break;\n case 13:\n data.push(92);\n data.push(114);\n break;\n case 92:\n data.push(92);\n data.push(currentData);\n break;\n default:\n data.push(currentData);\n break;\n }\n }\n return data;\n };\n /**\n * Creates a `copy of PdfString`.\n * @private\n */\n PdfString.prototype.clone = function (crossTable) {\n if (this.clonedObject1 !== null && this.clonedObject1.CrossTable === crossTable) {\n return this.clonedObject1;\n }\n else {\n this.clonedObject1 = null;\n }\n var newString = new PdfString(this.stringValue);\n newString.bHex = this.bHex;\n newString.crossTable = crossTable;\n newString.isColorSpace = this.isColorSpace;\n this.clonedObject1 = newString;\n return newString;\n };\n /**\n * Converts string to array of unicode symbols.\n */\n PdfString.toUnicodeArray = function (value, bAddPrefix) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var startIndex = 0;\n var output = [];\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n output.push(code / 256 >>> 0);\n output.push(code & 0xff);\n }\n return output;\n };\n /**\n * Converts byte data to string.\n */\n PdfString.byteToString = function (data) {\n if (data == null) {\n throw new Error('Argument Null Exception : stream');\n }\n var result = '';\n for (var i = 0; i < data.length; ++i) {\n result += String.fromCharCode(data[i]);\n }\n return result;\n };\n //constants = ;\n /**\n * `General markers` for string.\n * @private\n */\n PdfString.stringMark = '()';\n /**\n * `Hex markers` for string.\n * @private\n */\n PdfString.hexStringMark = '<>';\n /**\n * Format of password data.\n * @private\n */\n PdfString.hexFormatPattern = '{0:X2}';\n return PdfString;\n}());\nexport { PdfString };\n","import { Encoding, validateNullOrUndefined } from './encoding';\nimport { Save } from './save';\n/**\n * StreamWriter class contains the implementation for writing characters to a file in a particular encoding\n * ```typescript\n * let writer = new StreamWriter();\n * writer.write('Hello World');\n * writer.save('Sample.txt');\n * writer.dispose();\n * ```\n */\nvar StreamWriter = /** @class */ (function () {\n /**\n * Initializes a new instance of the StreamWriter class by using the specified encoding.\n * @param {Encoding} encoding?- The character encoding to use.\n */\n function StreamWriter(encoding) {\n this.bufferBlob = new Blob(['']);\n this.bufferText = '';\n this.init(encoding);\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(StreamWriter.prototype, \"buffer\", {\n /**\n * Gets the content written to the StreamWriter as Blob.\n * @returns Blob\n */\n get: function () {\n this.flush();\n return this.bufferBlob;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StreamWriter.prototype, \"encoding\", {\n /**\n * Gets the encoding.\n * @returns Encoding\n */\n get: function () {\n return this.enc;\n },\n enumerable: true,\n configurable: true\n });\n StreamWriter.prototype.init = function (encoding) {\n if (encoding === null || encoding === undefined) {\n this.enc = new Encoding(false);\n this.enc.type = 'Utf8';\n }\n else {\n this.enc = encoding;\n this.setBomByte();\n }\n };\n /**\n * Private method to set Byte Order Mark(BOM) value based on EncodingType\n */\n StreamWriter.prototype.setBomByte = function () {\n if (this.encoding.includeBom) {\n switch (this.encoding.type) {\n case 'Unicode':\n var arrayUnicode = new ArrayBuffer(2);\n var uint8 = new Uint8Array(arrayUnicode);\n uint8[0] = 255;\n uint8[1] = 254;\n this.bufferBlob = new Blob([arrayUnicode]);\n break;\n case 'Utf8':\n var arrayUtf8 = new ArrayBuffer(3);\n var utf8 = new Uint8Array(arrayUtf8);\n utf8[0] = 239;\n utf8[1] = 187;\n utf8[2] = 191;\n this.bufferBlob = new Blob([arrayUtf8]);\n break;\n default:\n this.bufferBlob = new Blob(['']);\n break;\n }\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - The file name to save\n * @returns {void}\n */\n StreamWriter.prototype.save = function (fileName) {\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n };\n /**\n * Writes the specified string.\n * @param {string} value - The string to write. If value is null or undefined, nothing is written.\n * @returns {void}\n */\n StreamWriter.prototype.write = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText += value;\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n StreamWriter.prototype.flush = function () {\n if (this.bufferText === undefined || this.bufferText === null || this.bufferText.length === 0) {\n return;\n }\n var bufferArray = this.encoding.getBytes(this.bufferText, 0, this.bufferText.length);\n this.bufferText = '';\n this.bufferBlob = new Blob([this.bufferBlob, bufferArray]);\n };\n /**\n * Writes the specified string followed by a line terminator\n * @param {string} value - The string to write. If value is null or undefined, nothing is written\n * @returns {void}\n */\n StreamWriter.prototype.writeLine = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText = this.bufferText + value + '\\r\\n';\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n /**\n * Releases the resources used by the StreamWriter\n * @returns {void}\n */\n StreamWriter.prototype.destroy = function () {\n this.bufferBlob = undefined;\n this.bufferText = undefined;\n if (this.enc instanceof Encoding) {\n this.enc.destroy();\n }\n this.enc = undefined;\n };\n return StreamWriter;\n}());\nexport { StreamWriter };\n","import { StreamWriter } from '@syncfusion/ej2-file-utils';\nimport { Encoding } from '@syncfusion/ej2-file-utils';\nimport { PdfDocument } from './pdf-document';\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nvar PdfDocumentBase = /** @class */ (function () {\n function PdfDocumentBase(document) {\n /**\n * If the stream is copied, then it specifies true.\n * @private\n */\n this.isStreamCopied = false;\n if (document instanceof PdfDocument) {\n this.document = document;\n }\n }\n Object.defineProperty(PdfDocumentBase.prototype, \"pdfObjects\", {\n //Prpperties\n /**\n * Gets the `PDF objects` collection, which stores all objects and references to it..\n * @private\n */\n get: function () {\n return this.objects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"crossTable\", {\n /**\n * Gets the `cross-reference` table.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"currentSavingObj\", {\n /**\n * Gets or sets the current saving `object number`.\n * @private\n */\n get: function () {\n return this.currentSavingObject;\n },\n set: function (value) {\n this.currentSavingObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"catalog\", {\n /**\n * Gets the PDF document `catalog`.\n * @private\n */\n get: function () {\n return this.pdfCatalog;\n },\n set: function (value) {\n this.pdfCatalog = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Sets the `main object collection`.\n * @private\n */\n PdfDocumentBase.prototype.setMainObjectCollection = function (mainObjectCollection) {\n this.objects = mainObjectCollection;\n };\n /**\n * Sets the `cross table`.\n * @private\n */\n PdfDocumentBase.prototype.setCrossTable = function (cTable) {\n this.pdfCrossTable = cTable;\n };\n /**\n * Sets the `catalog`.\n * @private\n */\n PdfDocumentBase.prototype.setCatalog = function (catalog) {\n this.pdfCatalog = catalog;\n };\n PdfDocumentBase.prototype.save = function (filename) {\n var _this = this;\n var encoding = new Encoding(true);\n var SW = new StreamWriter(encoding);\n if (typeof filename === 'undefined') {\n var encoding_1 = new Encoding(true);\n var SW_1 = new StreamWriter(encoding_1);\n return new Promise(function (resolve, reject) {\n /* tslint:disable-next-line:no-any */\n var obj = {};\n obj.blobData = new Blob([_this.document.docSave(SW_1, true)], { type: 'application/pdf' });\n resolve(obj);\n });\n }\n else {\n this.document.docSave(SW, filename, true);\n }\n };\n /**\n * `Clone` of parent object - PdfDocument.\n * @private\n */\n PdfDocumentBase.prototype.clone = function () {\n return this.document;\n };\n return PdfDocumentBase;\n}());\nexport { PdfDocumentBase };\n","/**\n * `PdfName` class is used to perform name (element names) related primitive operations.\n * @private\n */\nvar PdfName = /** @class */ (function () {\n function PdfName(value) {\n /**\n * `Start symbol` of the name object.\n * @default /\n * @private\n */\n this.stringStartMark = '/';\n /**\n * `Value` of the element.\n * @private\n */\n this.internalValue = '';\n /**\n * Indicates if the object is currently in `saving state or not`.\n * @default false\n * @private\n */\n this.isSaving6 = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position6 = -1;\n this.internalValue = this.normalizeValue(value);\n }\n Object.defineProperty(PdfName.prototype, \"status\", {\n //property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status6;\n },\n set: function (value) {\n this.status6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving6;\n },\n set: function (value) {\n this.isSaving6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index6;\n },\n set: function (value) {\n this.index6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position6;\n },\n set: function (value) {\n this.position6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the object.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n set: function (value) {\n // if (value !== this.value) {\n var val = value;\n if (value !== null && value.length > 0) {\n // val = (value.substring(0, 1) === this.stringStartMark) ? value.substring(1) : value;\n val = value;\n this.internalValue = this.normalizeValue(val);\n }\n else {\n this.internalValue = val;\n }\n // }\n },\n enumerable: true,\n configurable: true\n });\n //public methods\n /**\n * `Saves` the name using the specified writer.\n * @private\n */\n PdfName.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.toString());\n };\n /**\n * Gets `string` representation of the primitive.\n * @private\n */\n PdfName.prototype.toString = function () {\n return (this.stringStartMark + this.escapeString(this.value));\n };\n /**\n * Creates a `copy of PdfName`.\n * @private\n */\n PdfName.prototype.clone = function (crossTable) {\n var newName = new PdfName();\n newName.value = this.internalValue;\n return newName;\n };\n /**\n * Replace some characters with its `escape sequences`.\n * @private\n */\n PdfName.prototype.escapeString = function (stringValue) {\n // if (str === null) {\n // throw new Error('ArgumentNullException : str');\n // }\n // if (str === '') {\n // return str;\n // }\n var result = '';\n var len = 0;\n for (var i = 0, len_1 = stringValue.length; i < len_1; i++) {\n var ch = stringValue[i];\n var index = PdfName.delimiters.indexOf(ch);\n // switch (ch) {\n // case '\\r' :\n // result = result + '\\\\r';\n // break;\n // case '\\n' :\n // result = result + '\\n';\n // break;\n // case '(' :\n // case ')' :\n // case '\\\\' :\n // //result.Append( '\\\\' ).Append( ch );\n // result = result + ch;\n // break;\n // default :\n // result = result + ch;\n // break;\n // }\n result = result + ch;\n }\n return result;\n };\n //methiods\n /**\n * Replace a symbol with its code with the precedence of the `sharp sign`.\n * @private\n */\n PdfName.prototype.normalizeValue = function (value, c) {\n // if (typeof c === undefined) {\n // let str : string = value;\n // for (let i : number = 0; i < PdfName.replacements.length; i++) {\n // str = this.normalizeValue(str, c);\n // }\n // return str;\n // } else {\n var strFormat = '#{0:X}';\n //return value.replace(c.toString(),String.format(strFormat,c));\n return value;\n // }\n };\n /**\n * PDF `special characters`.\n * @private\n */\n PdfName.delimiters = '()<>[]{}/%}';\n /**\n * The symbols that are not allowed in PDF names and `should be replaced`.\n * @private\n */\n PdfName.replacements = [' ', '\\t', '\\n', '\\r'];\n return PdfName;\n}());\nexport { PdfName };\n","/**\n * PdfOperators.ts class for EJ2-PDF\n * Class of string PDF common operators.\n * @private\n */\nvar Operators = /** @class */ (function () {\n /**\n * Create an instance of `PdfOperator` class.\n * @private\n */\n function Operators() {\n /**\n * Specifies the value of `test`.\n * @private\n */\n this.forTest = 'test';\n this.forTest = Operators.obj;\n }\n /**\n * Specifies the value of `obj`.\n * @private\n */\n Operators.obj = 'obj';\n /**\n * Specifies the value of `endObj`.\n * @private\n */\n Operators.endObj = 'endobj';\n /**\n * Specifies the value of `R`.\n * @private\n */\n Operators.r = 'R';\n /**\n * Specifies the value of ` `.\n * @private\n */\n Operators.whiteSpace = ' ';\n /**\n * Specifies the value of `/`.\n * @private\n */\n Operators.slash = '/';\n /**\n * Specifies the value of `\\r\\n`.\n * @private\n */\n Operators.newLine = '\\r\\n';\n /**\n * Specifies the value of `stream`.\n * @private\n */\n Operators.stream = 'stream';\n /**\n * Specifies the value of `endStream`.\n * @private\n */\n Operators.endStream = 'endstream';\n /**\n * Specifies the value of `xref`.\n * @private\n */\n Operators.xref = 'xref';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.f = 'f';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.n = 'n';\n /**\n * Specifies the value of `trailer`.\n * @private\n */\n Operators.trailer = 'trailer';\n /**\n * Specifies the value of `startxref`.\n * @private\n */\n Operators.startxref = 'startxref';\n /**\n * Specifies the value of `eof`.\n * @private\n */\n Operators.eof = '%%EOF';\n /**\n * Specifies the value of `header`.\n * @private\n */\n Operators.header = '%PDF-1.5';\n /**\n * Specifies the value of `beginText`.\n * @private\n */\n Operators.beginText = 'BT';\n /**\n * Specifies the value of `endText`.\n * @private\n */\n Operators.endText = 'ET';\n /**\n * Specifies the value of `m`.\n * @private\n */\n Operators.beginPath = 'm';\n /**\n * Specifies the value of `l`.\n * @private\n */\n Operators.appendLineSegment = 'l';\n /**\n * Specifies the value of `S`.\n * @private\n */\n Operators.stroke = 'S';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.fill = 'f';\n /**\n * Specifies the value of `f*`.\n * @private\n */\n Operators.fillEvenOdd = 'f*';\n /**\n * Specifies the value of `B`.\n * @private\n */\n Operators.fillStroke = 'B';\n /**\n * Specifies the value of `B*`.\n * @private\n */\n Operators.fillStrokeEvenOdd = 'B*';\n /**\n * Specifies the value of `c`.\n * @private\n */\n Operators.appendbeziercurve = 'c';\n /**\n * Specifies the value of `re`.\n * @private\n */\n Operators.appendRectangle = 're';\n /**\n * Specifies the value of `q`.\n * @private\n */\n Operators.saveState = 'q';\n /**\n * Specifies the value of `Q`.\n * @private\n */\n Operators.restoreState = 'Q';\n /**\n * Specifies the value of `Do`.\n * @private\n */\n Operators.paintXObject = 'Do';\n /**\n * Specifies the value of `cm`.\n * @private\n */\n Operators.modifyCtm = 'cm';\n /**\n * Specifies the value of `Tm`.\n * @private\n */\n Operators.modifyTM = 'Tm';\n /**\n * Specifies the value of `w`.\n * @private\n */\n Operators.setLineWidth = 'w';\n /**\n * Specifies the value of `J`.\n * @private\n */\n Operators.setLineCapStyle = 'J';\n /**\n * Specifies the value of `j`.\n * @private\n */\n Operators.setLineJoinStyle = 'j';\n /**\n * Specifies the value of `d`.\n * @private\n */\n Operators.setDashPattern = 'd';\n /**\n * Specifies the value of `i`.\n * @private\n */\n Operators.setFlatnessTolerance = 'i';\n /**\n * Specifies the value of `h`.\n * @private\n */\n Operators.closePath = 'h';\n /**\n * Specifies the value of `s`.\n * @private\n */\n Operators.closeStrokePath = 's';\n /**\n * Specifies the value of `b`.\n * @private\n */\n Operators.closeFillStrokePath = 'b';\n /**\n * Specifies the value of `setCharacterSpace`.\n * @private\n */\n Operators.setCharacterSpace = 'Tc';\n /**\n * Specifies the value of `setWordSpace`.\n * @private\n */\n Operators.setWordSpace = 'Tw';\n /**\n * Specifies the value of `setHorizontalScaling`.\n * @private\n */\n Operators.setHorizontalScaling = 'Tz';\n /**\n * Specifies the value of `setTextLeading`.\n * @private\n */\n Operators.setTextLeading = 'TL';\n /**\n * Specifies the value of `setFont`.\n * @private\n */\n Operators.setFont = 'Tf';\n /**\n * Specifies the value of `setRenderingMode`.\n * @private\n */\n Operators.setRenderingMode = 'Tr';\n /**\n * Specifies the value of `setTextRise`.\n * @private\n */\n Operators.setTextRise = 'Ts';\n /**\n * Specifies the value of `setTextScaling`.\n * @private\n */\n Operators.setTextScaling = 'Tz';\n /**\n * Specifies the value of `setCoords`.\n * @private\n */\n Operators.setCoords = 'Td';\n /**\n * Specifies the value of `goToNextLine`.\n * @private\n */\n Operators.goToNextLine = 'T*';\n /**\n * Specifies the value of `setText`.\n * @private\n */\n Operators.setText = 'Tj';\n /**\n * Specifies the value of `setTextWithFormatting`.\n * @private\n */\n Operators.setTextWithFormatting = 'TJ';\n /**\n * Specifies the value of `setTextOnNewLine`.\n * @private\n */\n Operators.setTextOnNewLine = '\\'';\n /**\n * Specifies the value of `selectcolorspaceforstroking`.\n * @private\n */\n Operators.selectcolorspaceforstroking = 'CS';\n /**\n * Specifies the value of `selectcolorspacefornonstroking`.\n * @private\n */\n Operators.selectcolorspacefornonstroking = 'cs';\n /**\n * Specifies the value of `setrbgcolorforstroking`.\n * @private\n */\n Operators.setrbgcolorforstroking = 'RG';\n /**\n * Specifies the value of `setrbgcolorfornonstroking`.\n * @private\n */\n Operators.setrbgcolorfornonstroking = 'rg';\n /**\n * Specifies the value of `K`.\n * @private\n */\n Operators.setcmykcolorforstroking = 'K';\n /**\n * Specifies the value of `k`.\n * @private\n */\n Operators.setcmykcolorfornonstroking = 'k';\n /**\n * Specifies the value of `G`.\n * @private\n */\n Operators.setgraycolorforstroking = 'G';\n /**\n * Specifies the value of `g`.\n * @private\n */\n Operators.setgraycolorfornonstroking = 'g';\n /**\n * Specifies the value of `W`.\n * @private\n */\n Operators.clipPath = 'W';\n /**\n * Specifies the value of `clipPathEvenOdd`.\n * @private\n */\n Operators.clipPathEvenOdd = 'W*';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.endPath = 'n';\n /**\n * Specifies the value of `setGraphicsState`.\n * @private\n */\n Operators.setGraphicsState = 'gs';\n /**\n * Specifies the value of `%`.\n * @private\n */\n Operators.comment = '%';\n /**\n * Specifies the value of `*`.\n * @private\n */\n Operators.evenOdd = '*';\n /**\n * Specifies the value of `M`.\n * @private\n */\n Operators.setMiterLimit = 'M';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For non-stroking operations.\n * @public\n */\n Operators.setColorAndPattern = 'scn';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For stroking.\n */\n Operators.setColorAndPatternStroking = 'SCN';\n return Operators;\n}());\nexport { Operators };\n","/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nvar DictionaryProperties = /** @class */ (function () {\n /**\n * Initialize an instance for `PdfDictionaryProperties` class.\n * @private\n */\n function DictionaryProperties() {\n /**\n * Specifies the value of `Pages`.\n * @private\n */\n this.pages = 'Pages';\n /**\n * Specifies the value of `Kids`.\n * @private\n */\n this.kids = 'Kids';\n /**\n * Specifies the value of `Count`.\n * @private\n */\n this.count = 'Count';\n /**\n * Specifies the value of `Resources`.\n * @private\n */\n this.resources = 'Resources';\n /**\n * Specifies the value of `Type`.\n * @private\n */\n this.type = 'Type';\n /**\n * Specifies the value of `Size`.\n * @private\n */\n this.size = 'Size';\n /**\n * Specifies the value of `MediaBox`.\n * @private\n */\n this.mediaBox = 'MediaBox';\n /**\n * Specifies the value of `Parent`.\n * @private\n */\n this.parent = 'Parent';\n /**\n * Specifies the value of `Root`.\n * @private\n */\n this.root = 'Root';\n /**\n * Specifies the value of `DecodeParms`.\n * @private\n */\n this.decodeParms = 'DecodeParms';\n /**\n * Specifies the value of `Filter`.\n * @private\n */\n this.filter = 'Filter';\n /**\n * Specifies the value of `Font`.\n * @private\n */\n this.font = 'Font';\n /**\n * Specifies the value of `Type1`.\n * @private\n */\n this.type1 = 'Type1';\n /**\n * Specifies the value of `BaseFont`.\n * @private\n */\n this.baseFont = 'BaseFont';\n /**\n * Specifies the value of `Encoding`.\n * @private\n */\n this.encoding = 'Encoding';\n /**\n * Specifies the value of `Subtype`.\n * @private\n */\n this.subtype = 'Subtype';\n /**\n * Specifies the value of `Contents`.\n * @private\n */\n this.contents = 'Contents';\n /**\n * Specifies the value of `ProcSet`.\n * @private\n */\n this.procset = 'ProcSet';\n /**\n * Specifies the value of `ColorSpace`.\n * @private\n */\n this.colorSpace = 'ColorSpace';\n /**\n * Specifies the value of `ExtGState`.\n * @private\n */\n this.extGState = 'ExtGState';\n /**\n * Specifies the value of `Pattern`.\n * @private\n */\n this.pattern = 'Pattern';\n /**\n * Specifies the value of `XObject`.\n * @private\n */\n this.xObject = 'XObject';\n /**\n * Specifies the value of `Length`.\n * @private\n */\n this.length = 'Length';\n /**\n * Specifies the value of `Width`.\n * @private\n */\n this.width = 'Width';\n /**\n * Specifies the value of `Height`.\n * @private\n */\n this.height = 'Height';\n /**\n * Specifies the value of `BitsPerComponent`.\n * @private\n */\n this.bitsPerComponent = 'BitsPerComponent';\n /**\n * Specifies the value of `Image`.\n * @private\n */\n this.image = 'Image';\n /**\n * Specifies the value of `dctdecode`.\n * @private\n */\n this.dctdecode = 'DCTDecode';\n /**\n * Specifies the value of `Columns`.\n * @private\n */\n this.columns = 'Columns';\n /**\n * Specifies the value of `BlackIs1`.\n * @private\n */\n this.blackIs1 = 'BlackIs1';\n /**\n * Specifies the value of `K`.\n * @private\n */\n this.k = 'K';\n /**\n * Specifies the value of `S`.\n * @private\n */\n this.s = 'S';\n /**\n * Specifies the value of `Predictor`.\n * @private\n */\n this.predictor = 'Predictor';\n /**\n * Specifies the value of `DeviceRGB`.\n * @private\n */\n this.deviceRgb = 'DeviceRGB';\n /**\n * Specifies the value of `Next`.\n * @private\n */\n this.next = 'Next';\n /**\n * Specifies the value of `Action`.\n * @private\n */\n this.action = 'Action';\n /**\n * Specifies the value of `Link`.\n * @private\n */\n this.link = 'Link';\n /**\n *\n * Specifies the value of `A`.\n * @private\n */\n this.a = 'A';\n /**\n * Specifies the value of `Annot`.\n * @private\n */\n this.annot = 'Annot';\n /**\n * Specifies the value of `P`.\n * @private\n */\n this.p = 'P';\n /**\n * Specifies the value of `C`.\n * @private\n */\n this.c = 'C';\n /**\n * Specifies the value of `Rect`.\n * @private\n */\n this.rect = 'Rect';\n /**\n * Specifies the value of `URI`.\n * @private\n */\n this.uri = 'URI';\n /**\n * Specifies the value of `Annots`.\n * @private\n */\n this.annots = 'Annots';\n /**\n * Specifies the value of `ca`.\n * @private\n */\n this.ca = 'ca';\n /**\n * Specifies the value of `CA`.\n * @private\n */\n this.CA = 'CA';\n /**\n * Specifies the value of `XYZ`.\n * @private\n */\n this.xyz = 'XYZ';\n /**\n * Specifies the value of `Fit`.\n * @private\n */\n this.fit = 'Fit';\n /**\n * Specifies the value of `Dest`.\n * @private\n */\n this.dest = 'Dest';\n /**\n * Specifies the value of `BM`.\n * @private\n */\n this.BM = 'BM';\n /**\n * Specifies the value of `flatedecode`.\n * @private\n */\n this.flatedecode = 'FlateDecode';\n /**\n * Specifies the value of `Rotate`.\n * @private\n */\n this.rotate = 'Rotate';\n /**\n * Specifies the value of 'bBox'.\n * @private\n */\n this.bBox = 'BBox';\n /**\n * Specifies the value of 'form'.\n * @private\n */\n this.form = 'Form';\n /**\n * Specifies the value of 'w'.\n * @private\n */\n this.w = 'W';\n /**\n * Specifies the value of 'cIDFontType2'.\n * @private\n */\n this.cIDFontType2 = 'CIDFontType2';\n /**\n * Specifies the value of 'cIDToGIDMap'.\n * @private\n */\n this.cIDToGIDMap = 'CIDToGIDMap';\n /**\n * Specifies the value of 'identity'.\n * @private\n */\n this.identity = 'Identity';\n /**\n * Specifies the value of 'dw'.\n * @private\n */\n this.dw = 'DW';\n /**\n * Specifies the value of 'fontDescriptor'.\n * @private\n */\n this.fontDescriptor = 'FontDescriptor';\n /**\n * Specifies the value of 'cIDSystemInfo'.\n * @private\n */\n this.cIDSystemInfo = 'CIDSystemInfo';\n /**\n * Specifies the value of 'fontName'.\n * @private\n */\n this.fontName = 'FontName';\n /**\n * Specifies the value of 'flags'.\n * @private\n */\n this.flags = 'Flags';\n /**\n * Specifies the value of 'fontBBox'.\n * @private\n */\n this.fontBBox = 'FontBBox';\n /**\n * Specifies the value of 'missingWidth'.\n * @private\n */\n this.missingWidth = 'MissingWidth';\n /**\n * Specifies the value of 'stemV'.\n * @private\n */\n this.stemV = 'StemV';\n /**\n * Specifies the value of 'italicAngle'.\n * @private\n */\n this.italicAngle = 'ItalicAngle';\n /**\n * Specifies the value of 'capHeight'.\n * @private\n */\n this.capHeight = 'CapHeight';\n /**\n * Specifies the value of 'ascent'.\n * @private\n */\n this.ascent = 'Ascent';\n /**\n * Specifies the value of 'descent'.\n * @private\n */\n this.descent = 'Descent';\n /**\n * Specifies the value of 'leading'.\n * @private\n */\n this.leading = 'Leading';\n /**\n * Specifies the value of 'avgWidth'.\n * @private\n */\n this.avgWidth = 'AvgWidth';\n /**\n * Specifies the value of 'fontFile2'.\n * @private\n */\n this.fontFile2 = 'FontFile2';\n /**\n * Specifies the value of 'maxWidth'.\n * @private\n */\n this.maxWidth = 'MaxWidth';\n /**\n * Specifies the value of 'xHeight'.\n * @private\n */\n this.xHeight = 'XHeight';\n /**\n * Specifies the value of 'stemH'.\n * @private\n */\n this.stemH = 'StemH';\n /**\n * Specifies the value of 'registry'.\n * @private\n */\n this.registry = 'Registry';\n /**\n * Specifies the value of 'ordering'.\n * @private\n */\n this.ordering = 'Ordering';\n /**\n * Specifies the value of 'supplement'.\n * @private\n */\n this.supplement = 'Supplement';\n /**\n * Specifies the value of 'type0'.\n * @private\n */\n this.type0 = 'Type0';\n /**\n * Specifies the value of 'identityH'.\n * @private\n */\n this.identityH = 'Identity-H';\n /**\n * Specifies the value of 'toUnicode'.\n * @private\n */\n this.toUnicode = 'ToUnicode';\n /**\n * Specifies the value of 'descendantFonts'.\n * @private\n */\n this.descendantFonts = 'DescendantFonts';\n /**\n * Specifies the value of 'background'.\n * @private\n */\n this.background = 'Background';\n /**\n * Specifies the value of 'shading'.\n * @private\n */\n this.shading = 'Shading';\n /**\n * Specifies the value of 'matrix'.\n * @private\n */\n this.matrix = 'Matrix';\n /**\n * Specifies the value of 'antiAlias'.\n * @private\n */\n this.antiAlias = 'AntiAlias';\n /**\n * Specifies the value of 'function'.\n * @private\n */\n this.function = 'Function';\n /**\n * Specifies the value of 'extend'.\n * @private\n */\n this.extend = 'Extend';\n /**\n * Specifies the value of 'shadingType'.\n * @private\n */\n this.shadingType = 'ShadingType';\n /**\n * Specifies the value of 'coords'.\n * @private\n */\n this.coords = 'Coords';\n /**\n * Specifies the value of 'domain'.\n * @private\n */\n this.domain = 'Domain';\n /**\n * Specifies the value of 'range'.\n * @private\n */\n this.range = 'Range';\n /**\n * Specifies the value of 'functionType'.\n * @private\n */\n this.functionType = 'FunctionType';\n /**\n * Specifies the value of 'bitsPerSample'.\n * @private\n */\n this.bitsPerSample = 'BitsPerSample';\n /**\n * Specifies the value of 'patternType'.\n * @private\n */\n this.patternType = 'PatternType';\n /**\n * Specifies the value of 'paintType'.\n * @private\n */\n this.paintType = 'PaintType';\n /**\n * Specifies the value of 'tilingType'.\n * @private\n */\n this.tilingType = 'TilingType';\n /**\n * Specifies the value of 'xStep'.\n * @private\n */\n this.xStep = 'XStep';\n /**\n * Specifies the value of 'yStep'.\n * @private\n */\n this.yStep = 'YStep';\n //\n }\n return DictionaryProperties;\n}());\nexport { DictionaryProperties };\n","import { Dictionary } from './../collections/dictionary';\nimport { PdfName } from './pdf-name';\nimport { Operators } from './../input-output/pdf-operators';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfDictionary` class is used to perform primitive operations.\n * @private\n */\nvar PdfDictionary = /** @class */ (function () {\n function PdfDictionary(dictionary) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position7 = -1;\n /**\n * The `IPdfSavable` with the specified key.\n * @private\n */\n this.primitiveItems = new Dictionary();\n /**\n * `Start marker` for dictionary.\n * @private\n */\n this.prefix = '<<';\n /**\n * `End marker` for dictionary.\n * @private\n */\n this.suffix = '>>';\n /**\n * @hidden\n * @private\n */\n this.resources = [];\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.object = null;\n /**\n * Flag for PDF file formar 1.5 is dictionary `archiving` needed.\n * @default true\n * @private\n */\n this.archive = true;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof dictionary === 'undefined') {\n this.primitiveItems = new Dictionary();\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n else {\n this.primitiveItems = new Dictionary();\n var keys = dictionary.items.keys();\n var values = dictionary.items.values();\n for (var index = 0; index < dictionary.items.size(); index++) {\n this.primitiveItems.setValue(keys[index], values[index]);\n }\n this.status = dictionary.status;\n this.freezeChanges(this);\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n }\n Object.defineProperty(PdfDictionary.prototype, \"items\", {\n //Properties\n /**\n * Gets or sets the `IPdfSavable` with the specified key.\n * @private\n */\n get: function () {\n return this.primitiveItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status7;\n },\n set: function (value) {\n this.status7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving7;\n },\n set: function (value) {\n this.isSaving7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index7;\n },\n set: function (value) {\n this.index7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position7;\n },\n set: function (value) {\n this.position7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.primitiveItems.size();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Dictionary\", {\n /**\n * Collection of `items` in the object.\n * @private\n */\n get: function () {\n return this;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.getArchive = function () {\n return this.archive;\n };\n /**\n * Set flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.setArchive = function (value) {\n this.archive = value;\n };\n /**\n * Sets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.setEncrypt = function (value) {\n this.encrypt = value;\n this.modify();\n };\n /**\n * Gets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.getEncrypt = function () {\n return this.encrypt;\n };\n /**\n * `Freezes` the changes.\n * @private\n */\n PdfDictionary.prototype.freezeChanges = function (freezer) {\n this.bChanged = false;\n };\n /**\n * Creates a `copy of PdfDictionary`.\n * @private\n */\n PdfDictionary.prototype.clone = function (crossTable) {\n //Need to add more codings\n var newDict = new PdfDictionary();\n return newDict;\n };\n /**\n * `Mark` this instance modified.\n * @private\n */\n PdfDictionary.prototype.modify = function () {\n this.bChanged = true;\n };\n /**\n * `Removes` the specified key.\n * @private\n */\n PdfDictionary.prototype.remove = function (key) {\n if (typeof key !== 'string') {\n this.primitiveItems.remove(key.value);\n this.modify();\n }\n else {\n this.remove(new PdfName(key));\n }\n };\n /**\n * `Determines` whether the dictionary contains the key.\n * @private\n */\n PdfDictionary.prototype.containsKey = function (key) {\n var returnValue = false;\n returnValue = this.primitiveItems.containsKey(key.toString());\n return returnValue;\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginSave = function () {\n this.beginSave.sender.beginSave();\n };\n /**\n * Raises event `Font Dictionary BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onFontDictionaryBeginSave = function () {\n this.fontDictionaryBeginSave.sender.fontDictionaryBeginSave();\n };\n /**\n * Raises event `Descendant Font BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onDescendantFontBeginSave = function () {\n this.descendantFontBeginSave.sender.descendantFontBeginSave();\n };\n /**\n * Raises event 'BeginSave'.\n * @private\n */\n PdfDictionary.prototype.onTemplateBeginSave = function () {\n this.pageBeginDrawTemplate.sender.pageBeginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginAnnotationSave = function () {\n this.annotationBeginSave.sender.beginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onSectionBeginSave = function (writer) {\n var saveEvent = this.sectionBeginSave;\n saveEvent.sender.beginSave(saveEvent.state, writer);\n };\n PdfDictionary.prototype.save = function (writer, bRaiseEvent) {\n if (typeof bRaiseEvent === 'undefined') {\n this.save(writer, true);\n }\n else {\n writer.write(this.prefix);\n if (typeof this.beginSave !== 'undefined') {\n this.onBeginSave();\n }\n if (typeof this.descendantFontBeginSave !== 'undefined') {\n this.onDescendantFontBeginSave();\n }\n if (typeof this.fontDictionaryBeginSave !== 'undefined') {\n this.onFontDictionaryBeginSave();\n }\n if (typeof this.annotationBeginSave !== 'undefined') {\n this.onBeginAnnotationSave();\n }\n if (typeof this.sectionBeginSave !== 'undefined') {\n this.onSectionBeginSave(writer);\n }\n if (typeof this.pageBeginDrawTemplate !== 'undefined') {\n this.onTemplateBeginSave();\n }\n // }\n if (this.Count > 0) {\n this.saveItems(writer);\n }\n writer.write(this.suffix);\n writer.write(Operators.newLine);\n }\n };\n /**\n * `Save dictionary items`.\n * @private\n */\n PdfDictionary.prototype.saveItems = function (writer) {\n writer.write(Operators.newLine);\n var keys = this.primitiveItems.keys();\n var values = this.primitiveItems.values();\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n var name_1 = new PdfName(key);\n name_1.save(writer);\n writer.write(Operators.whiteSpace);\n var resources = values[index];\n resources.save(writer);\n writer.write(Operators.newLine);\n }\n };\n return PdfDictionary;\n}());\nexport { PdfDictionary };\nvar SaveSectionCollectionEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveSectionCollectionEventHandler(sender) {\n this.sender = sender;\n }\n return SaveSectionCollectionEventHandler;\n}());\nexport { SaveSectionCollectionEventHandler };\nvar SaveDescendantFontEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveDescendantFontEventHandler(sender) {\n this.sender = sender;\n }\n return SaveDescendantFontEventHandler;\n}());\nexport { SaveDescendantFontEventHandler };\nvar SaveFontDictionaryEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontDictionaryEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontDictionaryEventHandler;\n}());\nexport { SaveFontDictionaryEventHandler };\nvar SaveAnnotationEventHandler = /** @class */ (function () {\n /**\n * New instance for `save annotation event handler` class.\n * @private\n */\n function SaveAnnotationEventHandler(sender) {\n this.sender = sender;\n }\n return SaveAnnotationEventHandler;\n}());\nexport { SaveAnnotationEventHandler };\nvar SaveSectionEventHandler = /** @class */ (function () {\n // constructors\n /**\n * New instance for `save section event handler` class.\n * @private\n */\n function SaveSectionEventHandler(sender, state) {\n this.sender = sender;\n this.state = state;\n }\n return SaveSectionEventHandler;\n}());\nexport { SaveSectionEventHandler };\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nvar SaveTemplateEventHandler = /** @class */ (function () {\n /**\n * New instance for save section collection event handler class.\n * @public\n */\n function SaveTemplateEventHandler(sender) {\n this.sender = sender;\n }\n return SaveTemplateEventHandler;\n}());\nexport { SaveTemplateEventHandler };\n","/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nvar PdfNumber = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfNumber` class.\n * @private\n */\n function PdfNumber(value) {\n /**\n * Sotres the `position`.\n * @default -1\n * @private\n */\n this.position5 = -1;\n this.value = value;\n }\n Object.defineProperty(PdfNumber.prototype, \"intValue\", {\n /**\n * Gets or sets the `integer` value.\n * @private\n */\n get: function () {\n return this.value;\n },\n set: function (value) {\n this.value = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isInteger\", {\n /**\n * Gets or sets a value indicating whether this instance `is integer`.\n * @private\n */\n get: function () {\n return this.integer;\n },\n set: function (value) {\n this.integer = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status5;\n },\n set: function (value) {\n this.status5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving5;\n },\n set: function (value) {\n this.isSaving5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index5;\n },\n set: function (value) {\n this.index5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position5;\n },\n set: function (value) {\n this.position5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves the object`.\n * @private\n */\n PdfNumber.prototype.save = function (writer) {\n writer.write(this.intValue.toString()); //tostring(CultureInfo.InletiantCulture)\n };\n /**\n * Creates a `copy of PdfNumber`.\n * @private\n */\n PdfNumber.prototype.clone = function (crossTable) {\n var newNumber = new PdfNumber(this.value);\n return newNumber;\n };\n /**\n * Converts a `float value to a string` using Adobe PDF rules.\n * @private\n */\n PdfNumber.floatToString = function (number) {\n // let tempString1 : string = number.toString();\n // let tempString2 : string = tempString1.indexOf('.') != -1 ? tempString1.substring(0, tempString1.indexOf('.')) : tempString1;\n var returnString = number.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n // let prefixLength : number = (22 - tempString2.length) >= 0 ? (22 - tempString2.length) : 0;\n // for (let index : number = 0; index < prefixLength; index++) {\n // returnString += '0';\n // }\n // returnString += tempString2 + '.00';\n // returnString += (tempString3.length > 6) ? tempString3.substring(0,6) : tempString3;\n // let suffixLength : number = (6 - tempString3.length) >= 0 ? (6 - tempString3.length) : 0;\n // for (let index : number = 0; index < suffixLength; index++) {\n // returnString += '0';\n // }\n return returnString;\n };\n /**\n * Determines the `minimum of the three values`.\n * @private\n */\n PdfNumber.min = function (x, y, z) {\n var r = Math.min(x, y);\n return Math.min(z, r);\n };\n return PdfNumber;\n}());\nexport { PdfNumber };\n","import { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @class */ (function () {\n function PdfArray(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n var tempNumberArray = array;\n for (var index = 0; index < tempNumberArray.length; index++) {\n var pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n var tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (var index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n PdfArray.prototype.items = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n Object.defineProperty(PdfArray.prototype, \"count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.internalElements.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status9;\n },\n set: function (value) {\n this.status9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving9;\n },\n set: function (value) {\n this.isSaving9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject9;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position9;\n },\n set: function (value) {\n this.position9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index9;\n },\n set: function (value) {\n this.index9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"elements\", {\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get: function () {\n return this.internalElements;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n PdfArray.prototype.add = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markedChange = function () {\n this.bChanged = true;\n };\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n PdfArray.prototype.contains = function (element) {\n var returnValue = false;\n for (var index = 0; index < this.internalElements.length; index++) {\n var tempElement = this.internalElements[index];\n var inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n };\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n PdfArray.prototype.getItems = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfArray.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (var i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n };\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n PdfArray.prototype.clone = function (crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n var newArray = new PdfArray();\n for (var index = 0; index < this.internalElements.length; index++) {\n var obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n };\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n PdfArray.fromRectangle = function (bounds) {\n var values = [bounds.x, bounds.y, bounds.width, bounds.height];\n var array = new PdfArray(values);\n return array;\n };\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n PdfArray.prototype.insert = function (index, element) {\n if (index < this.internalElements.length && index > 0) {\n var tempElements = [];\n for (var i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (var i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n };\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n PdfArray.prototype.indexOf = function (element) {\n return this.internalElements.indexOf(element);\n };\n /**\n * `Removes` element from the array.\n * @private\n */\n PdfArray.prototype.remove = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n var index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n };\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n PdfArray.prototype.removeAt = function (index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n var tempArray = [];\n for (var i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (var i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n };\n /**\n * `Clear` the array.\n * @private\n */\n PdfArray.prototype.clear = function () {\n this.internalElements = [];\n this.markChanged();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markChanged = function () {\n this.bChanged = true;\n };\n return PdfArray;\n}());\nexport { PdfArray };\n","/**\n * public Enum for `ObjectType`.\n * @private\n */\nexport var ObjectType;\n(function (ObjectType) {\n /**\n * Specifies the type of `Free`.\n * @private\n */\n ObjectType[ObjectType[\"Free\"] = 0] = \"Free\";\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n ObjectType[ObjectType[\"Normal\"] = 1] = \"Normal\";\n /**\n * Specifies the type of `Packed`.\n * @private\n */\n ObjectType[ObjectType[\"Packed\"] = 2] = \"Packed\";\n})(ObjectType || (ObjectType = {}));\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfString } from './../primitives/pdf-string';\n/**\n * `PdfReference` class is used to perform reference related primitive operations.\n * @private\n */\nvar PdfReference = /** @class */ (function () {\n function PdfReference(objNumber, genNumber) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index3 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position3 = -1;\n /**\n * Holds the `object number`.\n * @default 0\n * @private\n */\n this.objNumber = 0;\n /**\n * Holds the `generation number` of the object.\n * @default 0\n * @private\n */\n this.genNumber = 0;\n if (typeof objNumber === 'number' && typeof genNumber === 'number') {\n this.objNumber = objNumber;\n this.genNumber = genNumber;\n // } else if (typeof objNum === 'string' && typeof genNum === 'string') {\n }\n else {\n this.objNumber = Number(objNumber);\n this.genNumber = Number(genNumber);\n }\n }\n Object.defineProperty(PdfReference.prototype, \"status\", {\n //Property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status3;\n },\n set: function (value) {\n this.status3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving3;\n },\n set: function (value) {\n this.isSaving3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index3;\n },\n set: function (value) {\n this.index3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position3;\n },\n set: function (value) {\n this.position3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var returnObject3 = null;\n return returnObject3;\n },\n enumerable: true,\n configurable: true\n });\n //IPdfPrimitives methods\n /**\n * `Saves` the object.\n * @private\n */\n PdfReference.prototype.save = function (writer) {\n writer.write(this.toString());\n };\n /**\n * Returns a `string` representing the object.\n * @private\n */\n PdfReference.prototype.toString = function () {\n return this.objNumber.toString() + ' ' + this.genNumber.toString() + ' R';\n };\n /**\n * Creates a `deep copy` of the IPdfPrimitive object.\n * @private\n */\n PdfReference.prototype.clone = function (crossTable) {\n return null;\n };\n return PdfReference;\n}());\nexport { PdfReference };\n/**\n * `PdfReferenceHolder` class is used to perform reference holder related primitive operations.\n * @private\n */\nvar PdfReferenceHolder = /** @class */ (function () {\n function PdfReferenceHolder(obj1, obj2) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index4 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position4 = -1;\n /**\n * The `index` of the object within the object collection.\n * @default -1\n * @private\n */\n this.objectIndex = -1;\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (typeof obj2 === 'undefined') {\n this.initialize(obj1);\n // }\n // else {\n // if (obj2 === null) {\n // throw new Error('ArgumentNullException : crossTable');\n // }\n // if (obj1 === null) {\n // throw new Error('ArgumentNullException : reference');\n // }\n // this.crossTable = obj2;\n // let tempObj1 : PdfReference = obj1;\n // this.reference = tempObj1;\n // }\n }\n Object.defineProperty(PdfReferenceHolder.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status4;\n },\n set: function (value) {\n this.status4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving4;\n },\n set: function (value) {\n this.isSaving4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index4;\n },\n set: function (value) {\n this.index4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position4;\n },\n set: function (value) {\n this.position4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"object\", {\n /**\n * Gets the `object` the reference is of.\n * @private\n */\n get: function () {\n // if ((this.reference != null) || (this.object == null)) {\n // this.object = this.GetterObject();\n // }\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"index\", {\n /**\n * Gets the `index` of the object.\n * @private\n */\n get: function () {\n // let items : PdfMainObjectCollection = this.crossTable.PdfObjects;\n // this.objectIndex = items.GetObjectIndex(this.reference);\n // if (this.objectIndex < 0) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.reference);\n // this.objectIndex = items.Count - 1;\n // }\n return this.objectIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"element\", {\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n PdfReferenceHolder.prototype.initialize = function (obj1) {\n if (obj1 instanceof PdfArray\n || obj1 instanceof PdfDictionary\n || obj1 instanceof PdfName\n || obj1 instanceof PdfNumber\n || obj1 instanceof PdfStream\n || obj1 instanceof PdfReference\n || obj1 instanceof PdfString) {\n this.primitiveObject = obj1;\n }\n else {\n var tempObj = obj1;\n this.initialize(tempObj.element);\n }\n };\n /**\n * `Writes` a reference into a PDF document.\n * @private\n */\n PdfReferenceHolder.prototype.save = function (writer) {\n // if (writer == null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n var position = writer.position;\n var cTable = writer.document.crossTable;\n // if (cTable.Document instanceof PdfDocument) {\n this.object.isSaving = true;\n // }\n var reference = null;\n // if (writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true) {\n // if (this.reference === null) {\n // reference = cTable.GetReference(this.Object);\n // } else {\n // reference = this.reference;\n // }\n // } else {\n // reference = cTable.GetReference(this.Object);\n // }\n // if (!(writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true)) {\n reference = cTable.getReference(this.object);\n // }\n // if (writer.Position !== position) {\n // writer.Position = position;\n // }\n reference.save(writer);\n };\n /**\n * Creates a `copy of PdfReferenceHolder`.\n * @private\n */\n PdfReferenceHolder.prototype.clone = function (crossTable) {\n var refHolder = null;\n var temp = null;\n var refNum = '';\n var reference = null;\n // Restricts addition of same object multiple time.\n /* if (this.Reference != null && this.crossTable != null && this.crossTable.PageCorrespondance.containsKey(this.Reference)) {\n refHolder = new PdfReferenceHolder(this.crossTable.PageCorrespondance.getValue(this.Reference) as PdfReference, crossTable);\n return refHolder;\n }\n if (Object instanceof PdfNumber) {\n return new PdfNumber((Object as PdfNumber).IntValue);\n }\n */\n // if (Object instanceof PdfDictionary) {\n // // Meaning the referenced page is not available for import.\n // let type : PdfName = new PdfName(this.dictionaryProperties.type);\n // let dict : PdfDictionary = Object as PdfDictionary;\n // if (dict.ContainsKey(type)) {\n // let pageName : PdfName = dict.Items.getValue(type.Value) as PdfName;\n // if (pageName !== null) {\n // if (pageName.Value === 'Page') {\n // return new PdfNull();\n // }\n // }\n // }\n // }\n /* if (Object instanceof PdfName) {\n return new PdfName ((Object as PdfName ).Value);\n }\n */\n // Resolves circular references.\n // if (crossTable.PrevReference !== null && (crossTable.PrevReference.indexOf(this.Reference) !== -1)) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.Reference).ClonedObject;\n // if (obj !== null) {\n // reference = crossTable.GetReference(obj);\n // return new PdfReferenceHolder(reference, crossTable);\n // } else {\n // return new PdfNull();\n // }\n // }\n /*if (this.Reference !== null) {\n crossTable.PrevReference.push(this.Reference);\n }\n reference = crossTable.GetReference(temp);\n refHolder = new PdfReferenceHolder(reference, crossTable);\n return refHolder;\n */\n return null;\n };\n return PdfReferenceHolder;\n}());\nexport { PdfReferenceHolder };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCatalog.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\n/**\n * `PdfCatalog` class represents internal catalog of the Pdf document.\n * @private\n */\nvar PdfCatalog = /** @class */ (function (_super) {\n __extends(PdfCatalog, _super);\n //constructor\n /**\n * Initializes a new instance of the `PdfCatalog` class.\n * @private\n */\n function PdfCatalog() {\n var _this = _super.call(this) || this;\n //fields\n /**\n * Internal variable to store collection of `sections`.\n * @default null\n * @private\n */\n _this.sections = null;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n _this.tempDictionaryProperties = new DictionaryProperties();\n _this.items.setValue(new DictionaryProperties().type, new PdfName('Catalog'));\n return _this;\n }\n Object.defineProperty(PdfCatalog.prototype, \"pages\", {\n //Properties\n /**\n * Gets or sets the sections, which contain `pages`.\n * @private\n */\n get: function () {\n return this.sections;\n },\n set: function (value) {\n var dictionary = value.element;\n // if (this.sections !== value) {\n // this.sections = value;\n // this.Items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n // }\n this.sections = value;\n this.items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n return PdfCatalog;\n}(PdfDictionary));\nexport { PdfCatalog };\n","/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nexport var PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `Portrait`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n /**\n * Specifies the type of `Landscape`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * public Enum for `PdfPageRotateAngle`.\n * @private\n */\nexport var PdfPageRotateAngle;\n(function (PdfPageRotateAngle) {\n /**\n * Specifies the type of `RotateAngle0`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle0\"] = 0] = \"RotateAngle0\";\n /**\n * Specifies the type of `RotateAngle90`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle90\"] = 1] = \"RotateAngle90\";\n /**\n * Specifies the type of `RotateAngle180`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle180\"] = 2] = \"RotateAngle180\";\n /**\n * Specifies the type of `RotateAngle270`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle270\"] = 3] = \"RotateAngle270\";\n})(PdfPageRotateAngle || (PdfPageRotateAngle = {}));\n/**\n * public Enum for `PdfNumberStyle`.\n * @private\n */\nexport var PdfNumberStyle;\n(function (PdfNumberStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Numeric`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"Numeric\"] = 1] = \"Numeric\";\n /**\n * Specifies the type of `LowerLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerLatin\"] = 2] = \"LowerLatin\";\n /**\n * Specifies the type of `LowerRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerRoman\"] = 3] = \"LowerRoman\";\n /**\n * Specifies the type of `UpperLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperLatin\"] = 4] = \"UpperLatin\";\n /**\n * Specifies the type of `UpperRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperRoman\"] = 5] = \"UpperRoman\";\n})(PdfNumberStyle || (PdfNumberStyle = {}));\n/**\n * public Enum for `PdfDockStyle`.\n * @private\n */\nexport var PdfDockStyle;\n(function (PdfDockStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Bottom\"] = 1] = \"Bottom\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Top\"] = 2] = \"Top\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Right\"] = 4] = \"Right\";\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Fill\"] = 5] = \"Fill\";\n})(PdfDockStyle || (PdfDockStyle = {}));\n/**\n * public Enum for `PdfAlignmentStyle`.\n * @private\n */\nexport var PdfAlignmentStyle;\n(function (PdfAlignmentStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `TopLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopLeft\"] = 1] = \"TopLeft\";\n /**\n * Specifies the type of `TopCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopCenter\"] = 2] = \"TopCenter\";\n /**\n * Specifies the type of `TopRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopRight\"] = 3] = \"TopRight\";\n /**\n * Specifies the type of `MiddleLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n /**\n * Specifies the type of `MiddleCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n /**\n * Specifies the type of `MiddleRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleRight\"] = 6] = \"MiddleRight\";\n /**\n * Specifies the type of `BottomLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomLeft\"] = 7] = \"BottomLeft\";\n /**\n * Specifies the type of `BottomCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomCenter\"] = 8] = \"BottomCenter\";\n /**\n * Specifies the type of `BottomRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomRight\"] = 9] = \"BottomRight\";\n})(PdfAlignmentStyle || (PdfAlignmentStyle = {}));\n/**\n * public Enum for `TemplateType`.\n * @private\n */\nexport var TemplateType;\n(function (TemplateType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n TemplateType[TemplateType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n TemplateType[TemplateType[\"Top\"] = 1] = \"Top\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n TemplateType[TemplateType[\"Bottom\"] = 2] = \"Bottom\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n TemplateType[TemplateType[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n TemplateType[TemplateType[\"Right\"] = 4] = \"Right\";\n})(TemplateType || (TemplateType = {}));\n","import { ObjectStatus } from './../input-output/enum';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './pdf-dictionary-properties';\nimport { Operators } from './pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfReference } from './../primitives/pdf-reference';\nimport { ObjectType } from './cross-table';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfCatalog } from './../document/pdf-catalog';\n/**\n * `PdfCrossTable` is responsible for intermediate level parsing\n * and savingof a PDF document.\n * @private\n */\nvar PdfCrossTable = /** @class */ (function () {\n function PdfCrossTable() {\n /**\n * The modified `objects` that should be saved.\n * @private\n */\n this.objects = new Dictionary();\n /**\n * Holds `maximal generation number` or offset to object.\n * @default 0\n * @private\n */\n this.maxGenNumIndex = 0;\n /**\n * The `number of the objects`.\n * @default 0\n * @private\n */\n this.objectCount = 0;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new PdfDictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n }\n Object.defineProperty(PdfCrossTable.prototype, \"isMerging\", {\n //Properties\n /**\n * Gets or sets if the document `is merged`.\n * @private\n */\n get: function () {\n return this.merging;\n },\n set: function (value) {\n this.merging = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"trailer\", {\n /**\n * Gets the `trailer`.\n * @private\n */\n get: function () {\n if (this.internalTrailer == null) {\n this.internalTrailer = new PdfStream();\n }\n return this.internalTrailer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"document\", {\n /**\n * Gets or sets the main `PdfDocument` class instance.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n this.items = this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"pdfObjects\", {\n /**\n * Gets the catched `PDF object` main collection.\n * @private\n */\n get: function () {\n return this.items;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"objectCollection\", {\n /**\n * Gets the `object collection`.\n * @private\n */\n get: function () {\n return this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"count\", {\n /**\n * Gets or sets the `number of the objects` within the document.\n * @private\n */\n get: function () {\n return this.objectCount;\n },\n set: function (value) {\n this.objectCount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"nextObjNumber\", {\n /**\n * Returns `next available object number`.\n * @private\n */\n get: function () {\n this.count = this.count + 1;\n return this.count;\n },\n enumerable: true,\n configurable: true\n });\n PdfCrossTable.prototype.save = function (writer, filename) {\n this.saveHead(writer);\n var state = false;\n this.mappedReferences = null;\n this.objects.clear();\n this.markTrailerReferences();\n this.saveObjects(writer);\n var saveCount = this.count;\n var xrefPos = writer.position;\n this.registerObject(0, new PdfReference(0, -1), true);\n var prevXRef = 0;\n writer.write(Operators.xref);\n writer.write(Operators.newLine);\n this.saveSections(writer);\n this.saveTrailer(writer, this.count, prevXRef);\n this.saveTheEndess(writer, xrefPos);\n this.count = saveCount;\n for (var i = 0; i < this.objectCollection.count; ++i) {\n var oi = this.objectCollection.items(i);\n oi.object.isSaving = false;\n }\n if (typeof filename === 'undefined') {\n return writer.stream.buffer;\n }\n else {\n writer.stream.save(filename);\n }\n };\n /**\n * `Saves the endess` of the file.\n * @private\n */\n PdfCrossTable.prototype.saveTheEndess = function (writer, xrefPos) {\n writer.write(Operators.newLine + Operators.startxref + Operators.newLine);\n writer.write(xrefPos.toString() + Operators.newLine);\n writer.write(Operators.eof + Operators.newLine);\n };\n /**\n * `Saves the new trailer` dictionary.\n * @private\n */\n PdfCrossTable.prototype.saveTrailer = function (writer, count, prevXRef) {\n writer.write(Operators.trailer + Operators.newLine);\n // Save the dictionary.\n var trailer = this.trailer;\n trailer.items.setValue(this.dictionaryProperties.size, new PdfNumber(this.objectCount + 1));\n trailer = new PdfDictionary(trailer); // Make it real dictionary.\n trailer.setEncrypt(false);\n trailer.save(writer);\n };\n /**\n * `Saves the xref section`.\n * @private\n */\n PdfCrossTable.prototype.saveSections = function (writer) {\n var objectNum = 0;\n var count = 0;\n do {\n count = this.prepareSubsection(objectNum);\n this.saveSubsection(writer, objectNum, count);\n objectNum += count;\n } while (count !== 0);\n };\n /**\n * `Saves a subsection`.\n * @private\n */\n PdfCrossTable.prototype.saveSubsection = function (writer, objectNum, count) {\n if (count <= 0 || objectNum >= this.count) {\n return;\n }\n var subsectionHead = '{0} {1}{2}';\n writer.write(objectNum + ' ' + (count + 1) + Operators.newLine);\n for (var i = objectNum; i <= objectNum + count; ++i) {\n var obj = this.objects.getValue(i);\n var str = '';\n if (obj.type === ObjectType.Free) {\n str = this.getItem(obj.offset, 65535, true);\n }\n else {\n str = this.getItem(obj.offset, obj.generation, false);\n }\n writer.write(str);\n }\n };\n /**\n * Generates string for `xref table item`.\n * @private\n */\n PdfCrossTable.prototype.getItem = function (offset, genNumber, isFree) {\n var returnString = '';\n var addOffsetLength = 10 - offset.toString().length;\n if (genNumber <= 0) {\n genNumber = 0;\n }\n var addGenNumberLength = (5 - genNumber.toString().length) <= 0 ? 0 : (5 - genNumber.toString().length);\n for (var index = 0; index < addOffsetLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + offset.toString() + ' ';\n for (var index = 0; index < addGenNumberLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + genNumber.toString() + ' ';\n returnString = returnString + ((isFree) ? Operators.f : Operators.n) + Operators.newLine;\n return returnString;\n };\n /**\n * `Prepares a subsection` of the current section within the cross-reference table.\n * @private\n */\n PdfCrossTable.prototype.prepareSubsection = function (objectNum) {\n var count = 0;\n var i;\n var total = this.count;\n for (var k = 0; k < this.document.pdfObjects.count; k++) {\n var reference = this.document.pdfObjects.items(k).reference;\n var refString = reference.toString();\n var refArray = refString.split(' ');\n }\n if (objectNum >= total) {\n return count;\n }\n // search for first changed indirect object.\n for (i = objectNum; i < total; ++i) {\n break;\n }\n objectNum = i;\n // look up for all indirect objects in one subsection.\n for (; i < total; ++i) {\n ++count;\n }\n return count;\n };\n /**\n * `Marks the trailer references` being saved.\n * @private\n */\n PdfCrossTable.prototype.markTrailerReferences = function () {\n var tempArray;\n var keys = this.trailer.items.keys();\n var values = this.trailer.items.values();\n };\n /**\n * `Saves the head`.\n * @private\n */\n PdfCrossTable.prototype.saveHead = function (writer) {\n var version = this.generateFileVersion(writer.document);\n writer.write('%PDF-' + version);\n writer.write(Operators.newLine);\n };\n /**\n * Generates the `version` of the file.\n * @private\n */\n PdfCrossTable.prototype.generateFileVersion = function (document) {\n var iVersion = 4;\n var version = '1.' + iVersion.toString();\n return version;\n };\n PdfCrossTable.prototype.getReference = function (obj, bNew) {\n if (typeof bNew === 'undefined') {\n var wasNew = false;\n return this.getReference(obj, wasNew);\n }\n else {\n //code splitted for reducing lines of code exceeds 100.\n return this.getSubReference(obj, bNew);\n }\n };\n /**\n * Retrieves the `reference` of the object given.\n * @private\n */\n PdfCrossTable.prototype.getSubReference = function (obj, bNew) {\n var isNew = false;\n var wasNew;\n var reference = null;\n // if (obj.IsSaving) {\n if (this.items.count > 0 && obj.objectCollectionIndex > 0 && this.items.count > obj.objectCollectionIndex - 1) {\n var tempObj = this.document.pdfObjects.getReference(obj, wasNew);\n reference = tempObj.reference;\n wasNew = tempObj.wasNew;\n }\n if (reference == null) {\n if (obj.status === ObjectStatus.Registered) {\n wasNew = false;\n }\n else {\n wasNew = true;\n }\n }\n else {\n wasNew = false;\n }\n // need to add mapped reference code\n if (reference == null) {\n var objnumber = this.nextObjNumber;\n reference = new PdfReference(objnumber, 0);\n var found = void 0;\n if (wasNew) {\n this.document.pdfObjects.add(obj);\n this.document.pdfObjects.trySetReference(obj, reference, found);\n var tempIndex = this.document.pdfObjects.count - 1;\n var tempkey = this.document.pdfObjects.objectCollections[tempIndex].reference.objNumber;\n var tempvalue = this.document.pdfObjects.objectCollections[this.document.pdfObjects.count - 1];\n this.document.pdfObjects.mainObjectCollection.setValue(tempkey, tempvalue);\n obj.position = -1;\n }\n else {\n this.document.pdfObjects.trySetReference(obj, reference, found);\n }\n obj.objectCollectionIndex = reference.objNumber;\n obj.status = ObjectStatus.None;\n isNew = true;\n }\n bNew = isNew || this.bForceNew;\n return reference;\n };\n /**\n * `Saves all objects` in the collection.\n * @private\n */\n PdfCrossTable.prototype.saveObjects = function (writer) {\n var objectCollection = this.objectCollection;\n for (var i = 0; i < objectCollection.count; ++i) {\n var oi = objectCollection.items(i);\n var obj = oi.object;\n obj.isSaving = true;\n this.saveIndirectObject(obj, writer);\n }\n };\n /**\n * `Saves indirect object`.\n * @private\n */\n PdfCrossTable.prototype.saveIndirectObject = function (obj, writer) {\n var reference = this.getReference(obj);\n if (obj instanceof PdfCatalog) {\n this.trailer.items.setValue(this.dictionaryProperties.root, reference);\n }\n // NOTE : This is needed for correct string objects encryption.\n this.pdfDocument.currentSavingObj = reference;\n var tempArchive = false;\n tempArchive = obj.getArchive();\n var allowedType = !((obj instanceof PdfStream) || !tempArchive || (obj instanceof PdfCatalog));\n var sigFlag = false;\n this.registerObject(writer.position, reference);\n this.doSaveObject(obj, reference, writer);\n };\n /**\n * Performs `real saving` of the save object.\n * @private\n */\n PdfCrossTable.prototype.doSaveObject = function (obj, reference, writer) {\n var correctPosition = writer.length;\n writer.write(reference.objNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(reference.genNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(Operators.obj);\n writer.write(Operators.newLine);\n obj.save(writer);\n var stream = writer.stream;\n writer.write(Operators.endObj);\n writer.write(Operators.newLine);\n };\n PdfCrossTable.prototype.registerObject = function (offset, reference, free) {\n if (typeof free === 'boolean') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference, free));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n else if (typeof free === 'undefined') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n };\n /**\n * `Dereferences` the specified primitive object.\n * @private\n */\n PdfCrossTable.dereference = function (obj) {\n var rh = obj;\n if (rh != null) {\n obj = rh.object;\n }\n return obj;\n };\n return PdfCrossTable;\n}());\nexport { PdfCrossTable };\nvar RegisteredObject = /** @class */ (function () {\n function RegisteredObject(offset, reference, free) {\n var tempOffset = offset;\n this.offsetNumber = tempOffset;\n var tempReference = reference;\n this.generation = tempReference.genNumber;\n this.object = tempReference.objNumber;\n if (typeof free === 'undefined') {\n this.type = ObjectType.Normal;\n }\n else {\n this.type = ObjectType.Free;\n }\n }\n Object.defineProperty(RegisteredObject.prototype, \"objectNumber\", {\n //Properties\n /**\n * Gets the `object number`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RegisteredObject.prototype, \"offset\", {\n /**\n * Gets the `offset`.\n * @private\n */\n get: function () {\n var result;\n result = this.offsetNumber;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n return RegisteredObject;\n}());\nexport { RegisteredObject };\n","/**\n * Coordinates of Position for `PointF`.\n * @private\n */\nvar PointF = /** @class */ (function () {\n function PointF(x, y) {\n if (typeof x === 'undefined') {\n this.x = 0;\n this.y = 0;\n }\n else {\n if (x !== null) {\n this.x = x;\n }\n else {\n this.x = 0;\n }\n if (y !== null) {\n this.y = y;\n }\n else {\n this.y = 0;\n }\n }\n }\n return PointF;\n}());\nexport { PointF };\n/**\n * Width and Height as `Size`.\n * @private\n */\nvar SizeF = /** @class */ (function () {\n function SizeF(width, height) {\n if (typeof height === 'undefined') {\n this.height = 0;\n this.width = 0;\n }\n else {\n if (height !== null) {\n this.height = height;\n }\n else {\n this.height = 0;\n }\n if (width !== null) {\n this.width = width;\n }\n else {\n this.width = 0;\n }\n }\n }\n return SizeF;\n}());\nexport { SizeF };\n/**\n * `RectangleF` with Position and size.\n * @private\n */\nvar RectangleF = /** @class */ (function () {\n function RectangleF(arg1, arg2, arg3, arg4) {\n if (typeof arg1 === typeof arg1 && typeof arg1 === 'undefined') {\n this.x = 0;\n this.y = 0;\n this.height = 0;\n this.width = 0;\n }\n else {\n if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n var pointf = arg1;\n this.x = pointf.x;\n this.y = pointf.y;\n var sizef = arg2;\n this.height = sizef.height;\n this.width = sizef.width;\n }\n else {\n var x = arg1;\n var y = arg2;\n var width = arg3;\n var height = arg4;\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n }\n }\n return RectangleF;\n}());\nexport { RectangleF };\n/**\n * `Rectangle` with left, right, top and bottom.\n * @private\n */\nvar Rectangle = /** @class */ (function () {\n /**\n * Instance of `RectangleF` class with X, Y, Width and Height.\n * @private\n */\n function Rectangle(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n Object.defineProperty(Rectangle.prototype, \"width\", {\n /**\n * Gets a value of width\n */\n get: function () {\n return this.right - this.left;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n /**\n * Gets a value of height\n */\n get: function () {\n return this.bottom - this.top;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"topLeft\", {\n /**\n * Gets a value of Top and Left\n */\n get: function () {\n return new PointF(this.left, this.top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"size\", {\n /**\n * Gets a value of size\n */\n get: function () {\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Rectangle.prototype.toString = function () {\n return this.topLeft + 'x' + this.size;\n };\n return Rectangle;\n}());\nexport { Rectangle };\n","/**\n * PdfPageSize.ts class for EJ2-PDF\n */\nimport { SizeF } from './../drawing/pdf-drawing';\n/**\n * Represents information about various predefined `page sizes`.\n */\nvar PdfPageSize = /** @class */ (function () {\n //constructor\n /**\n * Initialize an instance for `PdfPageSize` class.\n * @private\n */\n function PdfPageSize() {\n // \n }\n /**\n * Specifies the size of `letter`.\n * @private\n */\n PdfPageSize.letter = new SizeF(612, 792);\n /**\n * Specifies the size of `note`.\n * @private\n */\n PdfPageSize.note = new SizeF(540, 720);\n /**\n * Specifies the size of `legal`.\n * @private\n */\n PdfPageSize.legal = new SizeF(612, 1008);\n /**\n * Specifies the size of `a0`.\n * @private\n */\n PdfPageSize.a0 = new SizeF(2380, 3368);\n /**\n * Specifies the size of `a1`.\n * @private\n */\n PdfPageSize.a1 = new SizeF(1684, 2380);\n /**\n * Specifies the size of `a2`.\n * @private\n */\n PdfPageSize.a2 = new SizeF(1190, 1684);\n /**\n * Specifies the size of `a3`.\n * @private\n */\n PdfPageSize.a3 = new SizeF(842, 1190);\n /**\n * Specifies the size of `a4`.\n * @private\n */\n PdfPageSize.a4 = new SizeF(595, 842);\n /**\n * Specifies the size of `a5`.\n * @private\n */\n PdfPageSize.a5 = new SizeF(421, 595);\n /**\n * Specifies the size of `a6`.\n * @private\n */\n PdfPageSize.a6 = new SizeF(297, 421);\n /**\n * Specifies the size of `a7`.\n * @private\n */\n PdfPageSize.a7 = new SizeF(210, 297);\n /**\n * Specifies the size of `a8`.\n * @private\n */\n PdfPageSize.a8 = new SizeF(148, 210);\n /**\n * Specifies the size of `a9`.\n * @private\n */\n PdfPageSize.a9 = new SizeF(105, 148);\n /**\n * Specifies the size of `a10`.\n * @private\n */\n PdfPageSize.a10 = new SizeF(74, 105);\n /**\n * Specifies the size of `b0`.\n * @private\n */\n PdfPageSize.b0 = new SizeF(2836, 4008);\n /**\n * Specifies the size of `b1`.\n * @private\n */\n PdfPageSize.b1 = new SizeF(2004, 2836);\n /**\n * Specifies the size of `b2`.\n * @private\n */\n PdfPageSize.b2 = new SizeF(1418, 2004);\n /**\n * Specifies the size of `b3`.\n * @private\n */\n PdfPageSize.b3 = new SizeF(1002, 1418);\n /**\n * Specifies the size of `b4`.\n * @private\n */\n PdfPageSize.b4 = new SizeF(709, 1002);\n /**\n * Specifies the size of `b5`.\n * @private\n */\n PdfPageSize.b5 = new SizeF(501, 709);\n /**\n * Specifies the size of `archE`.\n * @private\n */\n PdfPageSize.archE = new SizeF(2592, 3456);\n /**\n * Specifies the size of `archD`.\n * @private\n */\n PdfPageSize.archD = new SizeF(1728, 2592);\n /**\n * Specifies the size of `archC`.\n * @private\n */\n PdfPageSize.archC = new SizeF(1296, 1728);\n /**\n * Specifies the size of `archB`.\n * @private\n */\n PdfPageSize.archB = new SizeF(864, 1296);\n /**\n * Specifies the size of `archA`.\n * @private\n */\n PdfPageSize.archA = new SizeF(648, 864);\n /**\n * Specifies the size of `flsa`.\n * @private\n */\n PdfPageSize.flsa = new SizeF(612, 936);\n /**\n * Specifies the size of `halfLetter`.\n * @private\n */\n PdfPageSize.halfLetter = new SizeF(396, 612);\n /**\n * Specifies the size of `letter11x17`.\n * @private\n */\n PdfPageSize.letter11x17 = new SizeF(792, 1224);\n /**\n * Specifies the size of `ledger`.\n * @private\n */\n PdfPageSize.ledger = new SizeF(1224, 792);\n return PdfPageSize;\n}());\nexport { PdfPageSize };\n","/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nvar PdfMargins = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfMargins` class.\n * @private\n */\n function PdfMargins() {\n /**\n * Represents the `Default Page Margin` value.\n * @default 0.0\n * @private\n */\n this.pdfMargin = 40.0;\n this.setMargins(this.pdfMargin);\n }\n Object.defineProperty(PdfMargins.prototype, \"left\", {\n //Properties\n /**\n * Gets or sets the `left margin` size.\n * @private\n */\n get: function () {\n return this.leftMargin;\n },\n set: function (value) {\n this.leftMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"top\", {\n /**\n * Gets or sets the `top margin` size.\n * @private\n */\n get: function () {\n return this.topMargin;\n },\n set: function (value) {\n this.topMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"right\", {\n /**\n * Gets or sets the `right margin` size.\n * @private\n */\n get: function () {\n return this.rightMargin;\n },\n set: function (value) {\n this.rightMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom margin` size.\n * @private\n */\n get: function () {\n return this.bottomMargin;\n },\n set: function (value) {\n this.bottomMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"all\", {\n /**\n * Sets the `margins`.\n * @private\n */\n set: function (value) {\n this.setMargins(value);\n },\n enumerable: true,\n configurable: true\n });\n PdfMargins.prototype.setMargins = function (margin1, margin2, margin3, margin4) {\n if (typeof margin2 === 'undefined') {\n this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;\n }\n else {\n if (typeof margin3 === 'undefined') {\n this.leftMargin = this.rightMargin = margin1;\n this.bottomMargin = this.topMargin = margin2;\n }\n else {\n this.leftMargin = margin1;\n this.topMargin = margin2;\n this.rightMargin = margin3;\n this.bottomMargin = margin4;\n }\n }\n };\n /**\n * `Clones` the object.\n * @private\n */\n PdfMargins.prototype.clone = function () {\n return this;\n };\n return PdfMargins;\n}());\nexport { PdfMargins };\n","/**\n * public Enum for `PdfHorizontalAlignment`.\n * @private\n */\nexport var PdfHorizontalAlignment;\n(function (PdfHorizontalAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Right\"] = 2] = \"Right\";\n})(PdfHorizontalAlignment || (PdfHorizontalAlignment = {}));\n/**\n * public Enum for `PdfVerticalAlignment`.\n * @private\n */\nexport var PdfVerticalAlignment;\n(function (PdfVerticalAlignment) {\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Top\"] = 0] = \"Top\";\n /**\n * Specifies the type of `Middle`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Middle\"] = 1] = \"Middle\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n})(PdfVerticalAlignment || (PdfVerticalAlignment = {}));\n/**\n * public Enum for `public`.\n * @private\n */\nexport var PdfTextAlignment;\n(function (PdfTextAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Right\"] = 2] = \"Right\";\n /**\n * Specifies the type of `Justify`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Justify\"] = 3] = \"Justify\";\n})(PdfTextAlignment || (PdfTextAlignment = {}));\n/**\n * public Enum for `TextRenderingMode`.\n * @private\n */\nexport var TextRenderingMode;\n(function (TextRenderingMode) {\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n /**\n * Specifies the type of `Stroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Stroke\"] = 1] = \"Stroke\";\n /**\n * Specifies the type of `FillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"FillStroke\"] = 2] = \"FillStroke\";\n /**\n * Specifies the type of `None`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"None\"] = 3] = \"None\";\n /**\n * Specifies the type of `ClipFlag`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFlag\"] = 4] = \"ClipFlag\";\n /**\n * Specifies the type of `ClipFill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFill\"] = 4] = \"ClipFill\";\n /**\n * Specifies the type of `ClipStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipStroke\"] = 5] = \"ClipStroke\";\n /**\n * Specifies the type of `ClipFillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFillStroke\"] = 6] = \"ClipFillStroke\";\n /**\n * Specifies the type of `Clip`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\n/**\n * public Enum for `PdfLineJoin`.\n * @private\n */\nexport var PdfLineJoin;\n(function (PdfLineJoin) {\n /**\n * Specifies the type of `Miter`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Miter\"] = 0] = \"Miter\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Bevel`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Bevel\"] = 2] = \"Bevel\";\n})(PdfLineJoin || (PdfLineJoin = {}));\n/**\n * public Enum for `PdfLineCap`.\n * @private\n */\nexport var PdfLineCap;\n(function (PdfLineCap) {\n /**\n * Specifies the type of `Flat`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Flat\"] = 0] = \"Flat\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Square`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Square\"] = 2] = \"Square\";\n})(PdfLineCap || (PdfLineCap = {}));\n/**\n * public Enum for `PdfDashStyle`.\n * @private\n */\nexport var PdfDashStyle;\n(function (PdfDashStyle) {\n /**\n * Specifies the type of `Solid`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Solid\"] = 0] = \"Solid\";\n /**\n * Specifies the type of `Dash`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dash\"] = 1] = \"Dash\";\n /**\n * Specifies the type of `Dot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dot\"] = 2] = \"Dot\";\n /**\n * Specifies the type of `DashDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDot\"] = 3] = \"DashDot\";\n /**\n * Specifies the type of `DashDotDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDotDot\"] = 4] = \"DashDotDot\";\n /**\n * Specifies the type of `Custom`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Custom\"] = 5] = \"Custom\";\n})(PdfDashStyle || (PdfDashStyle = {}));\n/**\n * public Enum for `PdfFillMode`.\n * @private\n */\nexport var PdfFillMode;\n(function (PdfFillMode) {\n /**\n * Specifies the type of `Winding`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Winding\"] = 0] = \"Winding\";\n /**\n * Specifies the type of `Alternate`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Alternate\"] = 1] = \"Alternate\";\n})(PdfFillMode || (PdfFillMode = {}));\n/**\n * public Enum for `PdfColorSpace`.\n * @private\n */\nexport var PdfColorSpace;\n(function (PdfColorSpace) {\n /**\n * Specifies the type of `Rgb`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Rgb\"] = 0] = \"Rgb\";\n /**\n * Specifies the type of `Cmyk`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Cmyk\"] = 1] = \"Cmyk\";\n /**\n * Specifies the type of `GrayScale`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"GrayScale\"] = 2] = \"GrayScale\";\n /**\n * Specifies the type of `Indexed`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Indexed\"] = 3] = \"Indexed\";\n})(PdfColorSpace || (PdfColorSpace = {}));\n/**\n * public Enum for `PdfBlendMode`.\n * @private\n */\nexport var PdfBlendMode;\n(function (PdfBlendMode) {\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Normal\"] = 0] = \"Normal\";\n /**\n * Specifies the type of `Multiply`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Multiply\"] = 1] = \"Multiply\";\n /**\n * Specifies the type of `Screen`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Screen\"] = 2] = \"Screen\";\n /**\n * Specifies the type of `Overlay`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Overlay\"] = 3] = \"Overlay\";\n /**\n * Specifies the type of `Darken`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Darken\"] = 4] = \"Darken\";\n /**\n * Specifies the type of `Lighten`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Lighten\"] = 5] = \"Lighten\";\n /**\n * Specifies the type of `ColorDodge`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorDodge\"] = 6] = \"ColorDodge\";\n /**\n * Specifies the type of `ColorBurn`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorBurn\"] = 7] = \"ColorBurn\";\n /**\n * Specifies the type of `HardLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"HardLight\"] = 8] = \"HardLight\";\n /**\n * Specifies the type of `SoftLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"SoftLight\"] = 9] = \"SoftLight\";\n /**\n * Specifies the type of `Difference`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Difference\"] = 10] = \"Difference\";\n /**\n * Specifies the type of `Exclusion`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Exclusion\"] = 11] = \"Exclusion\";\n /**\n * Specifies the type of `Hue`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Hue\"] = 12] = \"Hue\";\n /**\n * Specifies the type of `Saturation`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Saturation\"] = 13] = \"Saturation\";\n /**\n * Specifies the type of `Color`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Color\"] = 14] = \"Color\";\n /**\n * Specifies the type of `Luminosity`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Luminosity\"] = 15] = \"Luminosity\";\n})(PdfBlendMode || (PdfBlendMode = {}));\n/**\n * public Enum for `PdfGraphicsUnit`.\n * @private\n */\nexport var PdfGraphicsUnit;\n(function (PdfGraphicsUnit) {\n /**\n * Specifies the type of `Centimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Centimeter\"] = 0] = \"Centimeter\";\n /**\n * Specifies the type of `Pica`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pica\"] = 1] = \"Pica\";\n /**\n * Specifies the type of `Pixel`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pixel\"] = 2] = \"Pixel\";\n /**\n * Specifies the type of `Point`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Point\"] = 3] = \"Point\";\n /**\n * Specifies the type of `Inch`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Inch\"] = 4] = \"Inch\";\n /**\n * Specifies the type of `Document`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Document\"] = 5] = \"Document\";\n /**\n * Specifies the type of `Millimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Millimeter\"] = 6] = \"Millimeter\";\n})(PdfGraphicsUnit || (PdfGraphicsUnit = {}));\n/**\n * public Enum for `PdfGridImagePosition`.\n * @private\n */\nexport var PdfGridImagePosition;\n(function (PdfGridImagePosition) {\n /**\n * Specifies the type of `Fit`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Fit\"] = 0] = \"Fit\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Stretch`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Stretch\"] = 2] = \"Stretch\";\n /**\n * Specifies the type of `Tile`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Tile\"] = 3] = \"Tile\";\n})(PdfGridImagePosition || (PdfGridImagePosition = {}));\n/**\n * public Enum for `the text rendering direction`.\n * @private\n */\nexport var PdfTextDirection;\n(function (PdfTextDirection) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `LeftToRight`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"LeftToRight\"] = 1] = \"LeftToRight\";\n /**\n * Specifies the type of `RightToLeft`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"RightToLeft\"] = 2] = \"RightToLeft\";\n})(PdfTextDirection || (PdfTextDirection = {}));\n","/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nexport var PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the type of `Regular`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Regular\"] = 0] = \"Regular\";\n /**\n * Specifies the type of `Bold`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Bold\"] = 1] = \"Bold\";\n /**\n * Specifies the type of `Italic`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Italic\"] = 2] = \"Italic\";\n /**\n * Specifies the type of `Underline`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Underline\"] = 4] = \"Underline\";\n /**\n * Specifies the type of `Strikeout`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Strikeout\"] = 8] = \"Strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Specifies the font family from the standard font.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * ```\n */\nexport var PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `Helvetica` font.\n */\n PdfFontFamily[PdfFontFamily[\"Helvetica\"] = 0] = \"Helvetica\";\n /**\n * Specifies the `Courier` font.\n */\n PdfFontFamily[PdfFontFamily[\"Courier\"] = 1] = \"Courier\";\n /**\n * Specifies the `TimesRoman` font.\n */\n PdfFontFamily[PdfFontFamily[\"TimesRoman\"] = 2] = \"TimesRoman\";\n /**\n * Specifies the `Symbol` font.\n */\n PdfFontFamily[PdfFontFamily[\"Symbol\"] = 3] = \"Symbol\";\n /**\n * Specifies the `ZapfDingbats` font.\n */\n PdfFontFamily[PdfFontFamily[\"ZapfDingbats\"] = 4] = \"ZapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * public Enum for `PdfFontType`.\n * @private\n */\nexport var PdfFontType;\n(function (PdfFontType) {\n /**\n * Specifies the type of `Standard`.\n * @private\n */\n PdfFontType[PdfFontType[\"Standard\"] = 0] = \"Standard\";\n /**\n * Specifies the type of `TrueType`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueType\"] = 1] = \"TrueType\";\n /**\n * Specifies the type of `TrueTypeEmbedded`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueTypeEmbedded\"] = 2] = \"TrueTypeEmbedded\";\n})(PdfFontType || (PdfFontType = {}));\n/**\n * public Enum for `PdfWordWrapType`.\n * @private\n */\nexport var PdfWordWrapType;\n(function (PdfWordWrapType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Word`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Word\"] = 1] = \"Word\";\n /**\n * Specifies the type of `WordOnly`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"WordOnly\"] = 2] = \"WordOnly\";\n /**\n * Specifies the type of `Character`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Character\"] = 3] = \"Character\";\n})(PdfWordWrapType || (PdfWordWrapType = {}));\n/**\n * public Enum for `PdfSubSuperScript`.\n * @private\n */\nexport var PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `SuperScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SuperScript\"] = 1] = \"SuperScript\";\n /**\n * Specifies the type of `SubScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SubScript\"] = 2] = \"SubScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * public Enum for `FontEncoding`.\n * @private\n */\nexport var FontEncoding;\n(function (FontEncoding) {\n /**\n * Specifies the type of `Unknown`.\n * @private\n */\n FontEncoding[FontEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `StandardEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"StandardEncoding\"] = 1] = \"StandardEncoding\";\n /**\n * Specifies the type of `MacRomanEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacRomanEncoding\"] = 2] = \"MacRomanEncoding\";\n /**\n * Specifies the type of `MacExpertEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacExpertEncoding\"] = 3] = \"MacExpertEncoding\";\n /**\n * Specifies the type of `WinAnsiEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"WinAnsiEncoding\"] = 4] = \"WinAnsiEncoding\";\n /**\n * Specifies the type of `PdfDocEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"PdfDocEncoding\"] = 5] = \"PdfDocEncoding\";\n /**\n * Specifies the type of `IdentityH`.\n * @private\n */\n FontEncoding[FontEncoding[\"IdentityH\"] = 6] = \"IdentityH\";\n})(FontEncoding || (FontEncoding = {}));\n/**\n * public Enum for `TtfCmapFormat`.\n * @private\n */\nexport var TtfCmapFormat;\n(function (TtfCmapFormat) {\n /**\n * This is the Apple standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Apple\"] = 0] = \"Apple\";\n /**\n * This is the Microsoft standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Microsoft\"] = 4] = \"Microsoft\";\n /**\n * Format 6: Trimmed table mapping.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Trimmed\"] = 6] = \"Trimmed\";\n})(TtfCmapFormat || (TtfCmapFormat = {}));\n/**\n * Enumerator that implements CMAP encodings.\n * @private\n */\nexport var TtfCmapEncoding;\n(function (TtfCmapEncoding) {\n /**\n * Unknown encoding.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * When building a symbol font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Symbol\"] = 1] = \"Symbol\";\n /**\n * When building a Unicode font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unicode\"] = 2] = \"Unicode\";\n /**\n * For font that will be used on a Macintosh.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Macintosh\"] = 3] = \"Macintosh\";\n})(TtfCmapEncoding || (TtfCmapEncoding = {}));\n/**\n * Ttf platform ID.\n * @private\n */\nexport var TtfPlatformID;\n(function (TtfPlatformID) {\n /**\n * Apple platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"AppleUnicode\"] = 0] = \"AppleUnicode\";\n /**\n * Macintosh platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Macintosh\"] = 1] = \"Macintosh\";\n /**\n * Iso platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Iso\"] = 2] = \"Iso\";\n /**\n * Microsoft platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Microsoft\"] = 3] = \"Microsoft\";\n})(TtfPlatformID || (TtfPlatformID = {}));\n/**\n * Microsoft encoding ID.\n * @private\n */\nexport var TtfMicrosoftEncodingID;\n(function (TtfMicrosoftEncodingID) {\n /**\n * Undefined encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Undefined\"] = 0] = \"Undefined\";\n /**\n * Unicode encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Unicode\"] = 1] = \"Unicode\";\n})(TtfMicrosoftEncodingID || (TtfMicrosoftEncodingID = {}));\n/**\n * Macintosh encoding ID.\n * @private\n */\nexport var TtfMacintoshEncodingID;\n(function (TtfMacintoshEncodingID) {\n /**\n * Roman encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Roman\"] = 0] = \"Roman\";\n /**\n * Japanese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Japanese\"] = 1] = \"Japanese\";\n /**\n * Chinese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Chinese\"] = 2] = \"Chinese\";\n})(TtfMacintoshEncodingID || (TtfMacintoshEncodingID = {}));\n/**\n * Enumerator that implements font descriptor flags.\n * @private\n */\nexport var FontDescriptorFlags;\n(function (FontDescriptorFlags) {\n /**\n * All glyphs have the same width (as opposed to proportional or variable-pitch fonts, which have different widths).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"FixedPitch\"] = 1] = \"FixedPitch\";\n /**\n * Glyphs have serifs, which are short strokes drawn at an angle on the top and\n * bottom of glyph stems (as opposed to sans serif fonts, which do not).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Serif\"] = 2] = \"Serif\";\n /**\n * Font contains glyphs outside the Adobe standard Latin character set. The\n * flag and the nonsymbolic flag cannot both be set or both be clear.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Symbolic\"] = 4] = \"Symbolic\";\n /**\n * Glyphs resemble cursive handwriting.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Script\"] = 8] = \"Script\";\n /**\n * Font uses the Adobe standard Latin character set or a subset of it.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Nonsymbolic\"] = 32] = \"Nonsymbolic\";\n /**\n * Glyphs have dominant vertical strokes that are slanted.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Italic\"] = 64] = \"Italic\";\n /**\n * Bold font.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"ForceBold\"] = 262144] = \"ForceBold\";\n})(FontDescriptorFlags || (FontDescriptorFlags = {}));\n/**\n * true type font composite glyph flags.\n * @private\n */\nexport var TtfCompositeGlyphFlags;\n(function (TtfCompositeGlyphFlags) {\n /**\n * The Arg1And2AreWords.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n /**\n * The ArgsAreXyValues.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n /**\n * The RoundXyToGrid.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n /**\n * The WeHaveScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n /**\n * The Reserved.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Reserved\"] = 16] = \"Reserved\";\n /**\n * The MoreComponents.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"MoreComponents\"] = 32] = \"MoreComponents\";\n /**\n * The WeHaveAnXyScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n /**\n * The WeHaveTwoByTwo\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n /**\n * The WeHaveInstructions.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n /**\n * The UseMyMetrics.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(TtfCompositeGlyphFlags || (TtfCompositeGlyphFlags = {}));\n","/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\nimport { SizeF, PointF } from './../drawing/pdf-drawing';\nimport { PdfPageSize } from './pdf-page-size';\nimport { PdfPageRotateAngle, PdfPageOrientation } from './enum';\nimport { PdfMargins } from './../graphics/pdf-margins';\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @class */ (function () {\n function PdfPageSettings(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n Object.defineProperty(PdfPageSettings.prototype, \"size\", {\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.setSize(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"orientation\", {\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"margins\", {\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get: function () {\n return this.pageMargins;\n },\n set: function (value) {\n this.pageMargins = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.width;\n },\n set: function (value) {\n this.pageSize.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.height;\n },\n set: function (value) {\n this.pageSize.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"origin\", {\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"rotate\", {\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get: function () {\n return this.rotateAngle;\n },\n set: function (value) {\n this.rotateAngle = value;\n this.isRotation = true;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n PdfPageSettings.prototype.updateSize = function (orientation) {\n var min = Math.min(this.pageSize.width, this.pageSize.height);\n var max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n };\n /**\n * Creates a `clone` of the object.\n * @private\n */\n PdfPageSettings.prototype.clone = function () {\n var settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n };\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n PdfPageSettings.prototype.getActualSize = function () {\n var width = this.width - (this.margins.left + this.margins.right);\n var height = this.height - (this.margins.top + this.margins.bottom);\n var size = new SizeF(width, height);\n return size;\n };\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n PdfPageSettings.prototype.setSize = function (size) {\n var min = Math.min(size.width, size.height);\n var max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n };\n return PdfPageSettings;\n}());\nexport { PdfPageSettings };\n","import { Operators } from './pdf-operators';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PointF, RectangleF } from './../drawing/pdf-drawing';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nvar PdfStreamWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfStreamWriter` class.\n * @private\n */\n function PdfStreamWriter(stream) {\n if (stream == null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.stream = stream;\n }\n //Implementation\n /**\n * `Clear` the stream.\n * @public\n */\n PdfStreamWriter.prototype.clear = function () {\n this.stream.clearStream();\n };\n PdfStreamWriter.prototype.setGraphicsState = function (dictionaryName) {\n if (dictionaryName instanceof PdfName) {\n this.stream.write(dictionaryName.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n else {\n this.stream.write(Operators.slash);\n this.stream.write(dictionaryName);\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n };\n /**\n * `Executes the XObject`.\n * @private\n */\n PdfStreamWriter.prototype.executeObject = function (name) {\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.paintXObject);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes path object`.\n * @private\n */\n PdfStreamWriter.prototype.closePath = function () {\n this.writeOperator(Operators.closePath);\n };\n /**\n * `Clips the path`.\n * @private\n */\n PdfStreamWriter.prototype.clipPath = function (useEvenOddRule) {\n this.stream.write(Operators.clipPath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n }\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.endPath);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes, then fills and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.closeFillStrokePath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills and strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.fillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.fillStroke);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills path`.\n * @private\n */\n PdfStreamWriter.prototype.fillPath = function (useEvenOddRule) {\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Ends the path`.\n * @private\n */\n PdfStreamWriter.prototype.endPath = function () {\n this.writeOperator(Operators.n);\n };\n /**\n * `Closes and fills the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillPath = function (useEvenOddRule) {\n this.writeOperator(Operators.closePath);\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Closes and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeStrokePath = function () {\n this.writeOperator(Operators.closeStrokePath);\n };\n /**\n * `Sets the text scaling`.\n * @private\n */\n PdfStreamWriter.prototype.setTextScaling = function (textScaling) {\n this.stream.write(PdfNumber.floatToString(textScaling));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextScaling);\n };\n /**\n * `Strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.strokePath = function () {\n this.writeOperator(Operators.stroke);\n };\n /**\n * `Restores` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.restoreGraphicsState = function () {\n this.writeOperator(Operators.restoreState);\n };\n /**\n * `Saves` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.saveGraphicsState = function () {\n this.writeOperator(Operators.saveState);\n };\n PdfStreamWriter.prototype.startNextLine = function (arg1, arg2) {\n if (typeof arg1 === 'undefined') {\n this.writeOperator(Operators.goToNextLine);\n }\n else if (arg1 instanceof PointF) {\n this.writePoint(arg1);\n this.writeOperator(Operators.setCoords);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.setCoords);\n }\n };\n /**\n * Shows the `text`.\n * @private\n */\n PdfStreamWriter.prototype.showText = function (text) {\n this.checkTextParam(text);\n this.writeText(text);\n this.writeOperator(Operators.setText);\n };\n /**\n * Sets `text leading`.\n * @private\n */\n PdfStreamWriter.prototype.setLeading = function (leading) {\n this.stream.write(PdfNumber.floatToString(leading));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextLeading);\n };\n /**\n * `Begins the path`.\n * @private\n */\n PdfStreamWriter.prototype.beginPath = function (x, y) {\n this.writePoint(x, y);\n this.writeOperator(Operators.beginPath);\n };\n /**\n * `Begins text`.\n * @private\n */\n PdfStreamWriter.prototype.beginText = function () {\n this.writeOperator(Operators.beginText);\n };\n /**\n * `Ends text`.\n * @private\n */\n PdfStreamWriter.prototype.endText = function () {\n this.writeOperator(Operators.endText);\n };\n PdfStreamWriter.prototype.appendRectangle = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writeOperator(Operators.appendRectangle);\n }\n };\n PdfStreamWriter.prototype.appendLineSegment = function (arg1, arg2) {\n if (arg1 instanceof PointF) {\n this.appendLineSegment(arg1.x, arg1.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.appendLineSegment);\n }\n };\n /**\n * Sets the `text rendering mode`.\n * @private\n */\n PdfStreamWriter.prototype.setTextRenderingMode = function (renderingMode) {\n this.stream.write(renderingMode.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setRenderingMode);\n };\n /**\n * Sets the `character spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setCharacterSpacing = function (charSpacing) {\n this.stream.write(PdfNumber.floatToString(charSpacing));\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.setCharacterSpace);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `word spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setWordSpacing = function (wordSpacing) {\n this.stream.write(PdfNumber.floatToString(wordSpacing));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setWordSpace);\n };\n PdfStreamWriter.prototype.showNextLineText = function (arg1, arg2) {\n if (arg1 instanceof PdfString) {\n this.checkTextParam(arg1);\n this.writeText(arg1);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n else {\n this.checkTextParam(arg1);\n this.writeText(arg1, arg2);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n };\n PdfStreamWriter.prototype.setColorSpace = function (arg1, arg2) {\n if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {\n var temparg1 = arg1;\n var temparg2 = arg2;\n // if (temparg1 == null) {\n // throw new Error('ArgumentNullException:name');\n // }\n var op = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;\n this.stream.write(temparg1.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(op);\n this.stream.write(Operators.newLine);\n }\n else {\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.setColorSpace(new PdfName(temparg1), temparg2);\n }\n };\n /**\n * Modifies current `transformation matrix`.\n * @private\n */\n PdfStreamWriter.prototype.modifyCtm = function (matrix) {\n if (matrix == null) {\n throw new Error('ArgumentNullException:matrix');\n }\n this.stream.write(matrix.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.modifyCtm);\n };\n PdfStreamWriter.prototype.setFont = function (font, name, size) {\n if (typeof name === 'string') {\n this.setFont(font, new PdfName(name), size);\n }\n else {\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(PdfNumber.floatToString(size));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setFont);\n }\n };\n /**\n * `Writes the operator`.\n * @private\n */\n PdfStreamWriter.prototype.writeOperator = function (opcode) {\n this.stream.write(opcode);\n this.stream.write(Operators.newLine);\n };\n PdfStreamWriter.prototype.checkTextParam = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (typeof text === 'string' && text === '') {\n throw new Error('ArgumentException:The text can not be an empty string, text');\n }\n };\n PdfStreamWriter.prototype.writeText = function (arg1, arg2) {\n if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {\n this.stream.write(arg1.pdfEncode());\n }\n else {\n var start = void 0;\n var end = void 0;\n if (arg2) {\n start = PdfString.hexStringMark[0];\n end = PdfString.hexStringMark[1];\n }\n else {\n start = PdfString.stringMark[0];\n end = PdfString.stringMark[1];\n }\n this.stream.write(start);\n this.stream.write(arg1);\n this.stream.write(end);\n }\n };\n PdfStreamWriter.prototype.writePoint = function (arg1, arg2) {\n if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {\n this.writePoint(arg1.x, arg1.y);\n }\n else {\n var temparg1 = arg1;\n this.stream.write(PdfNumber.floatToString(temparg1));\n this.stream.write(Operators.whiteSpace);\n // NOTE: Change Y co-ordinate because we shifted co-ordinate system only.\n arg2 = this.updateY(arg2);\n this.stream.write(PdfNumber.floatToString(arg2));\n this.stream.write(Operators.whiteSpace);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfStreamWriter.prototype.updateY = function (arg) {\n return -arg;\n };\n /**\n * `Writes string` to the file.\n * @private\n */\n PdfStreamWriter.prototype.write = function (string) {\n var builder = '';\n builder += string;\n builder += Operators.newLine;\n this.writeOperator(builder);\n };\n /**\n * `Writes comment` to the file.\n * @private\n */\n PdfStreamWriter.prototype.writeComment = function (comment) {\n if (comment != null && comment.length > 0) {\n var builder = '';\n builder += Operators.comment;\n builder += Operators.whiteSpace;\n builder += comment;\n //builder.Append( Operators.NewLine );\n this.writeOperator(builder);\n }\n else {\n throw new Error('Invalid comment');\n }\n };\n /**\n * Sets the `color and space`.\n * @private\n */\n PdfStreamWriter.prototype.setColorAndSpace = function (color, colorSpace, forStroking) {\n if (!color.isEmpty) {\n // bool test = color is PdfExtendedColor;\n this.stream.write(color.toString(colorSpace, forStroking));\n this.stream.write(Operators.newLine);\n }\n };\n // public setLineDashPattern(pattern : number[], patternOffset : number) : void\n // {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n // }\n // private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void\n // {\n // pattern.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // patternOffset.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // this.writeOperator(Operators.setDashPattern);\n // }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPattern = function (pattern, patternOffset) {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n this.setLineDashPatternHelper(pattern, patternOffset);\n };\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPatternHelper = function (pattern, patternOffset) {\n var tempPattern = '[';\n if (pattern.length > 1) {\n for (var index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString();\n }\n else {\n tempPattern += pattern[index].toString() + ' ';\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' ' + Operators.setDashPattern;\n this.stream.write(tempPattern);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `miter limit`.\n * @private\n */\n PdfStreamWriter.prototype.setMiterLimit = function (miterLimit) {\n this.stream.write(PdfNumber.floatToString(miterLimit));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setMiterLimit);\n };\n /**\n * Sets the `width of the line`.\n * @private\n */\n PdfStreamWriter.prototype.setLineWidth = function (width) {\n this.stream.write(PdfNumber.floatToString(width));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineWidth);\n };\n /**\n * Sets the `line cap`.\n * @private\n */\n PdfStreamWriter.prototype.setLineCap = function (lineCapStyle) {\n this.stream.write((lineCapStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineCapStyle);\n };\n /**\n * Sets the `line join`.\n * @private\n */\n PdfStreamWriter.prototype.setLineJoin = function (lineJoinStyle) {\n this.stream.write((lineJoinStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineJoinStyle);\n };\n Object.defineProperty(PdfStreamWriter.prototype, \"position\", {\n //IPdfWriter members\n /**\n * Gets or sets the current `position` within the stream.\n * @private\n */\n get: function () {\n return this.stream.position;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"length\", {\n /**\n * Gets `stream length`.\n * @private\n */\n get: function () {\n var returnValue = 0;\n if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {\n for (var index = 0; index < this.stream.data.length; index++) {\n returnValue += this.stream.data[index].length;\n }\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"document\", {\n /**\n * Gets and Sets the `current document`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /* tslint:disable-next-line:max-line-length */\n PdfStreamWriter.prototype.appendBezierSegment = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {\n this.writePoint(arg1.x, arg1.y);\n this.writePoint(arg2.x, arg2.y);\n this.writePoint(arg3.x, arg3.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writePoint(arg5, arg6);\n }\n this.writeOperator(Operators.appendbeziercurve);\n };\n PdfStreamWriter.prototype.setColourWithPattern = function (colours, patternName, forStroking) {\n if ((colours != null)) {\n var count = colours.length;\n var i = 0;\n for (i = 0; i < count; ++i) {\n this.stream.write(colours[i].toString());\n this.stream.write(Operators.whiteSpace);\n }\n }\n if ((patternName != null)) {\n this.stream.write(patternName.toString());\n this.stream.write(Operators.whiteSpace);\n }\n if (forStroking) {\n this.writeOperator(Operators.setColorAndPatternStroking);\n }\n else {\n this.writeOperator(Operators.setColorAndPattern);\n }\n };\n return PdfStreamWriter;\n}());\nexport { PdfStreamWriter };\n","import { SizeF, RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfWordWrapType } from './enum';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Class `lay outing the text`.\n */\nvar PdfStringLayouter = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n function PdfStringLayouter() {\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n //\n }\n PdfStringLayouter.prototype.layout = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg4 instanceof RectangleF) {\n this.initialize(arg1, arg2, arg3, arg4, arg5);\n this.isOverloadWithPosition = arg6;\n this.clientSize = arg7;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n else {\n this.initialize(arg1, arg2, arg3, arg4);\n this.isOverloadWithPosition = arg5;\n this.clientSize = arg6;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n };\n PdfStringLayouter.prototype.initialize = function (text, font, format, rectSize, pageHeight) {\n if (typeof pageHeight === 'number') {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.text = text;\n this.font = font;\n this.format = format;\n this.size = new SizeF(rectSize.width, rectSize.height);\n this.rectangle = rectSize;\n this.pageHeight = pageHeight;\n this.reader = new StringTokenizer(text);\n }\n else {\n this.initialize(text, font, format, new RectangleF(new PointF(0, 0), rectSize), 0);\n }\n };\n /**\n * `Clear` all resources.\n * @private\n */\n PdfStringLayouter.prototype.clear = function () {\n this.font = null;\n this.format = null;\n this.reader.close();\n this.reader = null;\n this.text = null;\n };\n /**\n * `Layouts` the text.\n * @private\n */\n PdfStringLayouter.prototype.doLayout = function () {\n var result = new PdfStringLayoutResult();\n var lineResult = new PdfStringLayoutResult();\n var lines = [];\n var line = this.reader.peekLine();\n var lineIndent = this.getLineIndent(true);\n while (line != null) {\n lineResult = this.layoutLine(line, lineIndent);\n if (lineResult !== null || typeof lineResult !== 'undefined') {\n var numSymbolsInserted = 0;\n /* tslint:disable */\n var returnedValue = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);\n /* tslint:enable */\n var success = returnedValue.success;\n numSymbolsInserted = returnedValue.numInserted;\n if (!success) {\n this.reader.read(numSymbolsInserted);\n break;\n }\n }\n // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {\n // break;\n // }\n this.reader.readLine();\n line = this.reader.peekLine();\n lineIndent = this.getLineIndent(false);\n }\n this.finalizeResult(result, lines);\n return result;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineIndent = function (firstLine) {\n var lineIndent = 0;\n if (this.format != null) {\n lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;\n lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates `height` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineHeight = function () {\n var height = this.font.height;\n if (this.format != null && this.format.lineSpacing !== 0) {\n height = this.format.lineSpacing + this.font.height;\n }\n return height;\n };\n /**\n * Calculates `width` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineWidth = function (line) {\n var width = this.font.getLineWidth(line, this.format);\n return width;\n };\n // tslint:disable\n /**\n * `Layouts` line.\n * @private\n */\n PdfStringLayouter.prototype.layoutLine = function (line, lineIndent) {\n var lineResult = new PdfStringLayoutResult();\n lineResult.layoutLineHeight = this.getLineHeight();\n var lines = [];\n var maxWidth = this.size.width;\n var lineWidth = this.getLineWidth(line) + lineIndent;\n var lineType = LineType.FirstParagraphLine;\n var readWord = true;\n // line is in bounds.\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);\n }\n else {\n var builder = '';\n var curLine = '';\n lineWidth = lineIndent;\n var curIndent = lineIndent;\n var reader = new StringTokenizer(line);\n var word = reader.peekWord();\n var isSingleWord = false;\n if (word.length !== reader.length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader.position += 1;\n word = reader.peekWord();\n }\n }\n while (word != null) {\n curLine = curLine + word;\n var curLineWidth = this.getLineWidth(curLine.toString()) + curIndent /*)*/;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this.getWrapType() === PdfWordWrapType.None) {\n break;\n }\n if (curLine.length === word.length) {\n // Character wrap is disabled or one symbol is greater than bounds.\n if (this.getWrapType() === PdfWordWrapType.WordOnly) {\n lineResult.textRemainder = line.substring(reader.position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader.peek().toString();\n continue;\n }\n }\n else {\n if (this.getLineWidth(word.toString()) > maxWidth) {\n this.format.wordWrap = PdfWordWrapType.Character;\n }\n else {\n if (typeof this.format !== 'undefined' && this.format !== null) {\n this.format.wordWrap = PdfWordWrapType.Word;\n }\n }\n if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {\n var ln = builder.toString();\n // if (ln.indexOf(' ') === -1) {\n // isSingleWord = true;\n // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);\n // } else {\n // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n // } \n if (ln !== ' ') {\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n }\n if (this.isOverloadWithPosition) {\n maxWidth = this.clientSize.width;\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = LineType.None;\n // if (isSingleWord) {\n // reader.readWord();\n // readWord = false;\n // }\n word = (readWord) ? word : reader.peekWord();\n //isSingleWord = false;\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader.peek().toString();\n }\n continue;\n }\n }\n /*tslint:disable:max-func-body-length */\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader.readWord();\n word = reader.peekWord();\n //isSingleWord = false;\n }\n else {\n reader.read();\n word = reader.peek().toString();\n }\n }\n if (builder.length > 0) {\n var ln = builder.toString();\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);\n }\n reader.close();\n }\n lineResult.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n lineResult.layoutLines.push(lines[index]);\n }\n lines = [];\n return lineResult;\n };\n /**\n * `Adds` line to line result.\n * @private\n */\n PdfStringLayouter.prototype.addToLineResult = function (lineResult, lines, line, lineWidth, breakType) {\n var info = new LineInfo();\n info.text = line;\n info.width = lineWidth;\n info.lineType = breakType;\n lines.push(info);\n var size = lineResult.actualSize;\n size.height += this.getLineHeight();\n size.width = Math.max(size.width, lineWidth);\n lineResult.size = size;\n };\n /**\n * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.\n * @private\n */\n PdfStringLayouter.prototype.copyToResult = function (result, lineResult, lines, \n /*out*/ numInserted) {\n var success = true;\n var allowPartialLines = (this.format != null && !this.format.lineLimit);\n var height = result.actualSize.height;\n var maxHeight = this.size.height;\n if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {\n maxHeight = this.rectangle.y - this.pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n numInserted = 0;\n if (lineResult.lines != null) {\n for (var i = 0, len = lineResult.lines.length; i < len; i++) {\n var expHeight = height + lineResult.lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n var info = lineResult.lines[i];\n numInserted += info.text.length;\n info = this.trimLine(info, (lines.length === 0));\n lines.push(info);\n // Update width.\n var size = result.actualSize;\n size.width = Math.max(size.width, info.width);\n result.size = size;\n // The part of the line fits only and it's allowed to use partial lines.\n // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)\n // {\n // let shouldClip : boolean = (this.format == null || !this.format.noClip);\n // if (shouldClip)\n // {\n // let exceededHeight : number = expHeight - maxHeight;\n // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;\n // height = /*Utils.Round(*/ height + fitHeight /*)*/;\n // }\n // else\n // {\n // height = expHeight;\n // }\n // success = false;\n // break;\n // } else {\n height = expHeight;\n // }\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height != result.size.height) {\n var size1 = result.actualSize;\n size1.height = height;\n result.size = size1;\n }\n return { success: success, numInserted: numInserted };\n };\n /**\n * `Finalizes` final result.\n * @private\n */\n PdfStringLayouter.prototype.finalizeResult = function (result, lines) {\n result.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n result.layoutLines.push(lines[index]);\n }\n result.layoutLineHeight = this.getLineHeight();\n if (!this.reader.end) {\n result.textRemainder = this.reader.readToEnd();\n }\n lines = [];\n };\n /**\n * `Trims` whitespaces at the line.\n * @private\n */\n PdfStringLayouter.prototype.trimLine = function (info, firstLine) {\n var line = info.text;\n var lineWidth = info.width;\n // Trim start whitespaces if the line is not a start of the paragraph only.\n var trimStartSpaces = ((info.lineType & LineType.FirstParagraphLine) === 0);\n var start = (this.format == null || !this.format.rightToLeft);\n var spaces = StringTokenizer.spaces;\n line = (start) ? line.trim() : line.trim();\n // Recalculate line width.\n if (line.length !== info.text.length) {\n lineWidth = this.getLineWidth(line);\n if ((info.lineType & LineType.FirstParagraphLine) > 0) {\n lineWidth += this.getLineIndent(firstLine);\n }\n }\n info.text = line;\n info.width = lineWidth;\n return info;\n };\n /**\n * Returns `wrap` type.\n * @private\n */\n PdfStringLayouter.prototype.getWrapType = function () {\n var wrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;\n return wrapType;\n };\n return PdfStringLayouter;\n}());\nexport { PdfStringLayouter };\n//Internal declaration\nvar PdfStringLayoutResult = /** @class */ (function () {\n function PdfStringLayoutResult() {\n }\n Object.defineProperty(PdfStringLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets the `text` which is not lay outed.\n * @private\n */\n get: function () {\n return this.textRemainder;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"actualSize\", {\n /**\n * Gets the actual layout text `bounds`.\n * @private\n */\n get: function () {\n if (typeof this.size === 'undefined') {\n this.size = new SizeF(0, 0);\n }\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lines\", {\n /**\n * Gets layout `lines` information.\n * @private\n */\n get: function () {\n return this.layoutLines;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineHeight\", {\n /**\n * Gets the `height` of the line.\n * @private\n */\n get: function () {\n return this.layoutLineHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"empty\", {\n /**\n * Gets value that indicates whether any layout text [`empty`].\n * @private\n */\n get: function () {\n return (this.layoutLines == null || this.layoutLines.length === 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineCount\", {\n /**\n * Gets `number of` the layout lines.\n * @private\n */\n get: function () {\n var count = (!this.empty) ? this.layoutLines.length : 0;\n return count;\n },\n enumerable: true,\n configurable: true\n });\n return PdfStringLayoutResult;\n}());\nexport { PdfStringLayoutResult };\nvar LineInfo = /** @class */ (function () {\n function LineInfo() {\n }\n Object.defineProperty(LineInfo.prototype, \"lineType\", {\n //Properties\n /**\n * Gets the `type` of the line text.\n * @private\n */\n get: function () {\n return this.type;\n },\n set: function (value) {\n this.type = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"text\", {\n /**\n * Gets the line `text`.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"width\", {\n /**\n * Gets `width` of the line text.\n * @private\n */\n get: function () {\n return this.lineWidth;\n },\n set: function (value) {\n this.lineWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n return LineInfo;\n}());\nexport { LineInfo };\n/**\n* Break type of the `line`.\n* @private\n*/\nexport var LineType;\n(function (LineType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n LineType[LineType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `NewLineBreak`.\n * @private\n */\n LineType[LineType[\"NewLineBreak\"] = 1] = \"NewLineBreak\";\n /**\n * Specifies the type of `LayoutBreak`.\n * @private\n */\n LineType[LineType[\"LayoutBreak\"] = 2] = \"LayoutBreak\";\n /**\n * Specifies the type of `FirstParagraphLine`.\n * @private\n */\n LineType[LineType[\"FirstParagraphLine\"] = 4] = \"FirstParagraphLine\";\n /**\n * Specifies the type of `LastParagraphLine`.\n * @private\n */\n LineType[LineType[\"LastParagraphLine\"] = 8] = \"LastParagraphLine\";\n})(LineType || (LineType = {}));\n","import { PdfColorSpace } from './enum';\nimport { Operators } from './../input-output/pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfArray } from './../primitives/pdf-array';\n/**\n * Implements structures and routines working with `color`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // set color\n * let brushColor : PdfColor = new PdfColor(0, 0, 0);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(brushColor);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default black color\n */\nvar PdfColor = /** @class */ (function () {\n function PdfColor(color1, color2, color3, color4) {\n if (typeof color1 === 'undefined') {\n if (typeof color2 !== 'undefined' && typeof color3 !== 'undefined' && typeof color4 !== 'undefined') {\n this.assignRGB(color2, color3, color4);\n }\n else {\n this.filled = false;\n }\n }\n else if (color1 instanceof PdfColor) {\n this.redColor = color1.r;\n this.greenColor = color1.g;\n this.blueColor = color1.b;\n this.grayColor = color1.gray;\n this.alpha = color1.alpha;\n this.filled = (this.alpha !== 0);\n /* tslint:disable-next-line:max-line-length */\n }\n else if (typeof color1 === 'number' && typeof color2 === 'undefined' && typeof color3 === 'undefined' && typeof color4 === 'undefined') {\n if (color1 < 0) {\n color1 = 0;\n }\n if (color1 > 1) {\n color1 = 1;\n }\n this.redColor = color1 * PdfColor.maxColourChannelValue;\n this.greenColor = color1 * PdfColor.maxColourChannelValue;\n this.blueColor = color1 * PdfColor.maxColourChannelValue;\n this.cyanColor = color1;\n this.magentaColor = color1;\n this.yellowColor = color1;\n this.blackColor = color1;\n this.grayColor = color1;\n this.alpha = PdfColor.maxColourChannelValue;\n this.filled = true;\n }\n else if (typeof color4 === 'undefined') {\n this.assignRGB(color1, color2, color3);\n }\n else {\n this.assignRGB(color2, color3, color4, color1);\n }\n }\n /**\n * `Assign` red, green, blue colors with alpha value..\n * @private\n */\n PdfColor.prototype.assignRGB = function (r, g, b, a) {\n if (typeof r === 'undefined' || typeof g === 'undefined' || typeof b === 'undefined') {\n this.filled = false;\n }\n else {\n this.cyanColor = 0;\n this.magentaColor = 0;\n this.yellowColor = 0;\n this.blackColor = 0;\n this.grayColor = 0;\n this.redColor = r;\n this.greenColor = g;\n this.blueColor = b;\n if (typeof a === 'undefined') {\n this.alpha = PdfColor.maxColourChannelValue;\n }\n else {\n this.alpha = a;\n }\n this.filled = true;\n this.assignCMYK(r, g, b);\n }\n };\n /**\n * `Calculate and assign` cyan, megenta, yellow colors from rgb values..\n * @private\n */\n PdfColor.prototype.assignCMYK = function (r, g, b) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n var black = PdfNumber.min(1 - red, 1 - green, 1 - blue);\n var cyan = (black === 1.0) ? 0 : (1 - red - black) / (1 - black);\n var magenta = (black === 1.0) ? 0 : (1 - green - black) / (1 - black);\n var yellow = (black === 1.0) ? 0 : (1 - blue - black) / (1 - black);\n this.blackColor = black;\n this.cyanColor = cyan;\n this.magentaColor = magenta;\n this.yellowColor = yellow;\n };\n Object.defineProperty(PdfColor.prototype, \"r\", {\n //Properties\n // public static get Empty():PdfColor\n // {\n // return this.s_emptyColor\n // }\n /**\n * Gets or sets `Red` channel value.\n * @private\n */\n get: function () {\n return this.redColor;\n },\n set: function (value) {\n this.redColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"red\", {\n /**\n * Gets the `Red` color\n * @private\n */\n get: function () {\n return (this.r / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"b\", {\n /**\n * Gets or sets `Blue` channel value.\n * @private\n */\n get: function () {\n return this.blueColor;\n },\n set: function (value) {\n this.blueColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"blue\", {\n /**\n * Gets the `blue` color.\n * @private\n */\n get: function () {\n return (this.b / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"c\", {\n /**\n * Gets or sets `Cyan` channel value.\n * @private\n */\n get: function () {\n return this.cyanColor;\n },\n set: function (value) {\n if (value < 0) {\n this.cyanColor = 0;\n }\n else if (value > 1) {\n this.cyanColor = 1;\n }\n else {\n this.cyanColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"k\", {\n /**\n * Gets or sets `Black` channel value.\n * @private\n */\n get: function () {\n return this.blackColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.blackColor = 0;\n }\n else if ((value > 1)) {\n this.blackColor = 1;\n }\n else {\n this.blackColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"m\", {\n /**\n * Gets or sets `Magenta` channel value.\n * @private\n */\n get: function () {\n return this.magentaColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.magentaColor = 0;\n }\n else if ((value > 1)) {\n this.magentaColor = 1;\n }\n else {\n this.magentaColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"y\", {\n /**\n * Gets or sets `Yellow` channel value.\n * @private\n */\n get: function () {\n return this.yellowColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.yellowColor = 0;\n }\n else if ((value > 1)) {\n this.yellowColor = 1;\n }\n else {\n this.yellowColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"g\", {\n /**\n * Gets or sets `Green` channel value.\n * @private\n */\n get: function () {\n return this.greenColor;\n },\n set: function (value) {\n this.greenColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"green\", {\n /**\n * Gets the `Green` color.\n * @private\n */\n get: function () {\n return (this.g / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"gray\", {\n /**\n * Gets or sets `Gray` channel value.\n * @private\n */\n get: function () {\n return ((((this.redColor + this.greenColor) + this.blueColor)) / (PdfColor.maxColourChannelValue * 3));\n },\n set: function (value) {\n if (value < 0) {\n this.grayColor = 0;\n }\n else if (value > 1) {\n this.grayColor = 1;\n }\n else {\n this.grayColor = value;\n }\n this.r = (this.grayColor * PdfColor.maxColourChannelValue);\n this.g = (this.grayColor * PdfColor.maxColourChannelValue);\n this.b = (this.grayColor * PdfColor.maxColourChannelValue);\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"isEmpty\", {\n /**\n * Gets whether the PDFColor `is Empty` or not.\n * @private\n */\n get: function () {\n return !this.filled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"a\", {\n /**\n * Gets or sets `Alpha` channel value.\n * @private\n */\n get: function () {\n return this.alpha;\n },\n set: function (value) {\n if (value < 0) {\n this.alpha = 0;\n }\n else {\n // if (this.alpha !== value) {\n this.alpha = value;\n // }\n }\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Converts `PDFColor to PDF string` representation.\n * @private\n */\n PdfColor.prototype.toString = function (colorSpace, stroke) {\n if (this.isEmpty) {\n return '';\n }\n var str = '';\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n str = this.rgbToString(stroke);\n break;\n case PdfColorSpace.GrayScale:\n str = this.grayScaleToString(stroke);\n break;\n case PdfColorSpace.Cmyk:\n str = this.cmykToString(stroke);\n break;\n }\n return str;\n };\n /**\n * Sets `GrayScale` color.\n * @private\n */\n PdfColor.prototype.grayScaleToString = function (ifStroking) {\n var gray = this.gray;\n var colour = '';\n var obj = null;\n /* tslint:disable-next-line:max-line-length */\n obj = (ifStroking) ? PdfColor.grayStringsSroke.containsKey(gray) ? PdfColor.grayStringsSroke.getValue(gray) : null : PdfColor.grayStringsFill.containsKey(gray) ? PdfColor.grayStringsFill.getValue(gray) : null;\n if (obj == null) {\n if (ifStroking) {\n colour = gray.toString() + ' G';\n PdfColor.grayStringsSroke.setValue(gray, colour);\n }\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /**\n * Sets `RGB` color.\n * @private\n */\n PdfColor.prototype.rgbToString = function (ifStroking) {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var key = (r << 16) + (g << 8) + b;\n if (ifStroking) {\n key += 1 << 24;\n }\n var colour = '';\n var obj = null;\n if (PdfColor.rgbStrings.containsKey(key)) {\n obj = PdfColor.rgbStrings.getValue(key);\n }\n if (obj == null) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n if (ifStroking) {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' RG';\n }\n else {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' rg';\n }\n PdfColor.rgbStrings.setValue(key, colour);\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /***\n * Sets `CMYK` color.\n * @private\n */\n PdfColor.prototype.cmykToString = function (ifStroking) {\n var cyan = this.c;\n var magenta = this.m;\n var yellow = this.y;\n var black = this.b;\n var colour = '';\n colour = cyan.toString() + ' ' + magenta.toString() + ' ' + yellow.toString() + ' ' + black.toString() + ' K';\n return colour + Operators.newLine;\n };\n /**\n * Converts `colour to a PDF array`.\n * @private\n */\n PdfColor.prototype.toArray = function (colorSpace) {\n var array = new PdfArray();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n array.add(new PdfNumber(this.red));\n array.add(new PdfNumber(this.green));\n array.add(new PdfNumber(this.blue));\n break;\n }\n return array;\n };\n //Fields\n /**\n * Holds `RGB colors` converted into strings.\n * @private\n */\n PdfColor.rgbStrings = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `stroking`.\n * @private\n */\n PdfColor.grayStringsSroke = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `filling`.\n * @private\n */\n PdfColor.grayStringsFill = new Dictionary();\n /**\n * `Max value` of color channel.\n * @private\n */\n PdfColor.maxColourChannelValue = 255.0;\n return PdfColor;\n}());\nexport { PdfColor };\n","/**\n * `PdfBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrush = /** @class */ (function () {\n /**\n * Creates instanceof `PdfBrush` class.\n * @hidden\n * @private\n */\n function PdfBrush() {\n //\n }\n //IClonable implementation\n PdfBrush.prototype.clone = function () {\n return this;\n };\n return PdfBrush;\n}());\nexport { PdfBrush };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColor } from './../pdf-color';\nimport { PdfColorSpace } from './../enum';\nimport { PdfBrush } from './pdf-brush';\n/**\n * Represents a brush that fills any object with a solid color.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSolidBrush = /** @class */ (function (_super) {\n __extends(PdfSolidBrush, _super);\n //Constructors\n /**\n * Initializes a new instance of the `PdfSolidBrush` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param color color of the brush\n */\n function PdfSolidBrush(color) {\n var _this = _super.call(this) || this;\n _this.pdfColor = color;\n return _this;\n }\n Object.defineProperty(PdfSolidBrush.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color` of the brush.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Monitors` the changes of the brush and modify PDF state respectively.\n * @private\n */\n PdfSolidBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n if (streamWriter == null) {\n throw new Error('ArgumentNullException:streamWriter');\n }\n var diff = false;\n if (brush == null) {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n else {\n var sBrush = brush;\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n };\n /**\n * `Resets` the changes, which were made by the brush.\n * @private\n */\n PdfSolidBrush.prototype.resetChanges = function (streamWriter) {\n streamWriter.setColorAndSpace(new PdfColor(0, 0, 0), PdfColorSpace.Rgb, false);\n };\n return PdfSolidBrush;\n}(PdfBrush));\nexport { PdfSolidBrush };\n","/**\n * PdfPen.ts class for EJ2-PDF\n */\nimport { PdfColor } from './pdf-color';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfDashStyle, PdfColorSpace } from './enum';\nimport { PdfBrush } from './brushes/pdf-brush';\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @class */ (function () {\n function PdfPen(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n Object.defineProperty(PdfPen.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashOffset\", {\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get: function () {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n },\n set: function (value) {\n this.dashOffsetValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashPattern\", {\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get: function () {\n return this.penDashPattern;\n },\n set: function (value) {\n this.penDashPattern = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashStyle\", {\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfDashStyle;\n },\n set: function (value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineCap\", {\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineCap;\n },\n set: function (value) {\n this.pdfLineCap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineJoin\", {\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineJoin;\n },\n set: function (value) {\n this.pdfLineJoin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"miterLimit\", {\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get: function () {\n return this.internalMiterLimit;\n },\n set: function (value) {\n this.internalMiterLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"width\", {\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.penWidth;\n },\n set: function (value) {\n this.penWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n PdfPen.prototype.clone = function () {\n var pen = this;\n return pen;\n };\n /**\n * `Sets the brush`.\n * @private\n */\n PdfPen.prototype.setBrush = function (brush) {\n var sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n };\n /**\n * `Monitors the changes`.\n * @private\n */\n PdfPen.prototype.monitorChanges = function (currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n var diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n var miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n var brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n };\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n PdfPen.prototype.dashControl = function (pen, saveState, streamWriter) {\n saveState = true;\n var lineWidth = this.width;\n var pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n };\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n PdfPen.prototype.getPattern = function () {\n var pattern = this.dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n };\n return PdfPen;\n}());\nexport { PdfPen };\n","/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\nimport { PdfVerticalAlignment } from './../../graphics/enum';\nimport { PdfSubSuperScript, PdfWordWrapType } from './../../graphics/fonts/enum';\n/**\n * `PdfStringFormat` class represents the text layout information on PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStringFormat = /** @class */ (function () {\n function PdfStringFormat(arg1, arg2) {\n /**\n * The `scaling factor` of the text being drawn.\n * @private\n */\n this.scalingFactor = 100.0;\n /**\n * Indicates text `wrapping` type.\n * @private\n */\n this.wordWrapType = PdfWordWrapType.Word;\n this.internalLineLimit = true;\n this.wordWrapType = PdfWordWrapType.Word;\n if ((typeof arg1 !== 'undefined') && (typeof arg1 !== 'string')) {\n this.textAlignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.verticalAlignment = arg2;\n }\n }\n Object.defineProperty(PdfStringFormat.prototype, \"alignment\", {\n //Properties\n /**\n * Gets or sets the `horizontal` text alignment\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.textAlignment;\n },\n set: function (value) {\n this.textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"textDirection\", {\n get: function () {\n return this.direction;\n },\n set: function (value) {\n this.direction = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineAlignment\", {\n /**\n * Gets or sets the `vertical` text alignment.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.verticalAlignment === 'undefined' || this.verticalAlignment == null) {\n return PdfVerticalAlignment.Top;\n }\n else {\n return this.verticalAlignment;\n }\n },\n set: function (value) {\n this.verticalAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"rightToLeft\", {\n /**\n * Gets or sets the value that indicates text `direction` mode.\n * @private\n */\n get: function () {\n if (typeof this.isRightToLeft === 'undefined' || this.isRightToLeft == null) {\n return false;\n }\n else {\n return this.isRightToLeft;\n }\n },\n set: function (value) {\n this.isRightToLeft = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"characterSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the characters in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set character spacing\n * stringFormat.characterSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalCharacterSpacing === 'undefined' || this.internalCharacterSpacing == null) {\n return 0;\n }\n else {\n return this.internalCharacterSpacing;\n }\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the words in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set word spacing\n * stringFormat.wordSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalWordSpacing === 'undefined' || this.internalWordSpacing == null) {\n return 0;\n }\n else {\n return this.internalWordSpacing;\n }\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineSpacing\", {\n /**\n * Gets or sets value that indicates the `vertical distance` between the baselines of adjacent lines of text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set string\n * let text : string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n * incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitati';\n * // set rectangle bounds\n * let rectangle : RectangleF = new RectangleF({x : 0, y : 0}, {width : 300, height : 100})\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set line spacing\n * stringFormat.lineSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString(text, font, blackBrush, rectangle, stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.leading === 'undefined' || this.leading == null) {\n return 0;\n }\n else {\n return this.leading;\n }\n },\n set: function (value) {\n this.leading = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"clipPath\", {\n /**\n * Gets or sets a value indicating whether the text is `clipped` or not.\n * @private\n */\n get: function () {\n if (typeof this.clip === 'undefined' || this.clip == null) {\n return false;\n }\n else {\n return this.clip;\n }\n },\n set: function (value) {\n this.clip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"subSuperScript\", {\n /**\n * Gets or sets value indicating whether the text is in `subscript or superscript` mode.\n * @private\n */\n get: function () {\n if (typeof this.pdfSubSuperScript === 'undefined' || this.pdfSubSuperScript == null) {\n return PdfSubSuperScript.None;\n }\n else {\n return this.pdfSubSuperScript;\n }\n },\n set: function (value) {\n this.pdfSubSuperScript = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"paragraphIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the paragraph.\n * @private\n */\n get: function () {\n if (typeof this.internalParagraphIndent === 'undefined' || this.internalParagraphIndent == null) {\n return 0;\n }\n else {\n return this.internalParagraphIndent;\n }\n },\n set: function (value) {\n this.internalParagraphIndent = value;\n this.firstLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineLimit\", {\n /**\n * Gets or sets a value indicating whether [`line limit`].\n * @private\n */\n get: function () {\n return this.internalLineLimit;\n },\n set: function (value) {\n this.internalLineLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"measureTrailingSpaces\", {\n /**\n * Gets or sets a value indicating whether [`measure trailing spaces`].\n * @private\n */\n get: function () {\n if (typeof this.trailingSpaces === 'undefined' || this.trailingSpaces == null) {\n return false;\n }\n else {\n return this.trailingSpaces;\n }\n },\n set: function (value) {\n this.trailingSpaces = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"noClip\", {\n /**\n * Gets or sets a value indicating whether [`no clip`].\n * @private\n */\n get: function () {\n if (typeof this.isNoClip === 'undefined' || this.isNoClip == null) {\n return false;\n }\n else {\n return this.isNoClip;\n }\n },\n set: function (value) {\n this.isNoClip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordWrap\", {\n /**\n * Gets or sets value indicating type of the text `wrapping`.\n * @private\n */\n get: function () {\n // if (typeof this.wrapType === 'undefined' || this.wrapType == null) {\n // return PdfWordWrapType.Word;\n // } else {\n return this.wordWrapType;\n // }\n },\n set: function (value) {\n this.wordWrapType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"horizontalScalingFactor\", {\n /**\n * Gets or sets the `scaling factor`.\n * @private\n */\n get: function () {\n // if (typeof this.scalingFactor === 'undefined' || this.scalingFactor == null) {\n // return 100;\n // } else {\n return this.scalingFactor;\n // }\n },\n set: function (value) {\n if (value <= 0) {\n throw new Error('ArgumentOutOfRangeException:The scaling factor cant be less of equal to zero, ScalingFactor');\n }\n this.scalingFactor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"firstLineIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the text.\n * @private\n */\n get: function () {\n if (typeof this.initialLineIndent === 'undefined' || this.initialLineIndent == null) {\n return 0;\n }\n else {\n return this.initialLineIndent;\n }\n },\n set: function (value) {\n this.initialLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clones` the object.\n * @private\n */\n //IClonable implementation\n PdfStringFormat.prototype.clone = function () {\n var format = this;\n return format;\n };\n return PdfStringFormat;\n}());\nexport { PdfStringFormat };\n","/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n function StringTokenizer(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n Object.defineProperty(StringTokenizer.prototype, \"length\", {\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get: function () {\n return this.text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"end\", {\n get: function () {\n return (this.currentPosition === this.text.length);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"position\", {\n /**\n * Gets or sets the position.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n StringTokenizer.getCharsCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n var numSymbols = 0;\n var curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n var count = 0;\n for (var i = 0, len = text.length; i < len; i++) {\n var ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.readLine = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.peekLine = function () {\n var pos = this.currentPosition;\n var line = this.readLine();\n this.currentPosition = pos;\n return line;\n };\n /**\n * Reads a word from the text.\n * @private\n */\n StringTokenizer.prototype.readWord = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n var textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Peeks a word from the text.\n * @private\n */\n StringTokenizer.prototype.peekWord = function () {\n var pos = this.currentPosition;\n var word = this.readWord();\n this.currentPosition = pos;\n return word;\n };\n StringTokenizer.prototype.read = function (count) {\n if (typeof count === 'undefined') {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n var num = 0;\n var builder = '';\n while (!this.end && num < count) {\n var ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n };\n /**\n * Peeks char form the data.\n * @private\n */\n StringTokenizer.prototype.peek = function () {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n };\n /**\n * Closes a reader.\n * @private\n */\n StringTokenizer.prototype.close = function () {\n this.text = null;\n };\n StringTokenizer.prototype.readToEnd = function () {\n var text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substr(this.currentPosition, this.length - this.currentPosition);\n }\n this.currentPosition = this.length;\n return text;\n };\n //Implementation\n /**\n * Checks whether array contains a symbol.\n * @private\n */\n StringTokenizer.contains = function (array, symbol) {\n var contains = false;\n for (var i = 0; i < array.length; i++) {\n if (array[i] === symbol) {\n contains = true;\n break;\n }\n }\n return contains;\n };\n // Constants\n /**\n * `Whitespace` symbol.\n * @private\n */\n StringTokenizer.whiteSpace = ' ';\n /**\n * `tab` symbol.\n * @private\n */\n StringTokenizer.tab = '\\t';\n /**\n * Array of `spaces`.\n * @private\n */\n StringTokenizer.spaces = [StringTokenizer.whiteSpace, StringTokenizer.tab];\n /**\n * `Pattern` for WhiteSpace.\n * @private\n */\n StringTokenizer.whiteSpacePattern = '^[ \\t]+$';\n return StringTokenizer;\n}());\nexport { StringTokenizer };\n","/**\n * PdfFont.ts class for EJ2-PDF\n */\nimport { PdfFontStyle } from './enum';\nimport { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfStringFormat } from './pdf-string-format';\nimport { PdfStringLayouter } from './string-layouter';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nvar PdfFont = /** @class */ (function () {\n function PdfFont(size, style) {\n /**\n * `Style` of the font.\n * @private\n */\n this.fontStyle = PdfFontStyle.Regular;\n if (typeof size === 'number' && typeof style === 'undefined') {\n this.fontSize = size;\n }\n else {\n this.fontSize = size;\n this.setStyle(style);\n }\n }\n Object.defineProperty(PdfFont.prototype, \"name\", {\n //Properties\n /**\n * Gets the face name of this Font.\n * @private\n */\n get: function () {\n return this.metrics.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"size\", {\n /**\n * Gets the size of this font.\n * @private\n */\n get: function () {\n return this.fontSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"height\", {\n /**\n * Gets the height of the font in points.\n * @private\n */\n get: function () {\n return this.metrics.getHeight(null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"style\", {\n /**\n * Gets the style information for this font.\n * @private\n */\n get: function () {\n return this.fontStyle;\n },\n set: function (value) {\n this.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"bold\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `bold`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Bold) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"italic\", {\n /**\n * Gets a value indicating whether this `PdfFont` has the `italic` style applied.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Italic) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"strikeout\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `strikeout`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Strikeout) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"underline\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `underline`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Underline) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"metrics\", {\n /**\n * Gets or sets the `metrics` for this font.\n * @private\n */\n get: function () {\n return this.fontMetrics;\n },\n set: function (value) {\n this.fontMetrics = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"element\", {\n // /**\n // * Gets and Sets the font `internals`.\n // * @private\n // */\n // public get fontInternal() : IPdfPrimitive {\n // return this.pdfFontInternals;\n // }\n // public set fontInternal(value : IPdfPrimitive) {\n // this.pdfFontInternals = value;\n // }\n //IPdfWrapper Members\n /**\n * Gets the `element` representing the font.\n * @private\n */\n get: function () {\n return this.pdfFontInternals;\n },\n enumerable: true,\n configurable: true\n });\n PdfFont.prototype.measureString = function (text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n var temparg2 = arg2;\n var charactersFitted = 0;\n var linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'number' && typeof arg4 === 'number') {\n var temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n var layoutArea = new SizeF(arg2, 0);\n var temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else {\n if (text == null) {\n throw Error(\"ArgumentNullException(\\\"text\\\")\");\n }\n var temparg2 = arg2;\n var temparg3 = arg3;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(text, this, temparg3, temparg2, false, new SizeF(0, 0));\n // arg4 = (result.Remainder == null) ? text.length : text.length - result.Remainder.length;\n arg4 = text.length;\n arg5 = (result.empty) ? 0 : result.lines.length;\n return result.actualSize;\n }\n };\n /* tslint:enable */\n //IPdfCache Members\n /**\n * `Checks` whether the object is similar to another object.\n * @private\n */\n PdfFont.prototype.equalsTo = function (obj) {\n var result = this.equalsToFont(obj);\n return result;\n };\n /**\n * Returns `internals` of the object.\n * @private\n */\n PdfFont.prototype.getInternals = function () {\n return this.pdfFontInternals;\n };\n /**\n * Sets `internals` to the object.\n * @private\n */\n PdfFont.prototype.setInternals = function (internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this.pdfFontInternals = internals;\n };\n /**\n * Sets the `style` of the font.\n * @private\n */\n PdfFont.prototype.setStyle = function (style) {\n this.fontStyle = style;\n };\n /**\n * Applies `settings` to the default line width.\n * @private\n */\n PdfFont.prototype.applyFormatSettings = function (line, format, width) {\n // if (line == null) {\n // throw new Error(`ArgumentNullException:line`);\n // }\n var realWidth = width;\n if (format != null && width > 0) {\n // Space among characters is not default.\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n // Space among words is not default.\n if (format.wordSpacing !== 0) {\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n realWidth += whitespacesCount * format.wordSpacing;\n }\n }\n return realWidth;\n };\n //Constants\n /**\n * `Multiplier` of the symbol width.\n * @default 0.001\n * @private\n */\n PdfFont.charSizeMultiplier = 0.001;\n /**\n * `Synchronization` object.\n * @private\n */\n PdfFont.syncObject = new Object();\n return PdfFont;\n}());\nexport { PdfFont };\n","/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nexport var PdfLayoutType;\n(function (PdfLayoutType) {\n /**\n * Specifies the type of `Paginate`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"Paginate\"] = 0] = \"Paginate\";\n /**\n * Specifies the type of `OnePage`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"OnePage\"] = 1] = \"OnePage\";\n})(PdfLayoutType || (PdfLayoutType = {}));\n/**\n * public Enum for `PdfLayoutBreakType`.\n * @private\n */\nexport var PdfLayoutBreakType;\n(function (PdfLayoutBreakType) {\n /**\n * Specifies the type of `FitPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitPage\"] = 0] = \"FitPage\";\n /**\n * Specifies the type of `FitElement`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitElement\"] = 1] = \"FitElement\";\n /**\n * Specifies the type of `FitColumnsToPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitColumnsToPage\"] = 2] = \"FitColumnsToPage\";\n})(PdfLayoutBreakType || (PdfLayoutBreakType = {}));\nexport var PathPointType;\n(function (PathPointType) {\n /**\n * Specifies the path point type of `Start`.\n * @private\n */\n PathPointType[PathPointType[\"Start\"] = 0] = \"Start\";\n /**\n * Specifies the path point type of `Line`.\n * @private\n */\n PathPointType[PathPointType[\"Line\"] = 1] = \"Line\";\n /**\n * Specifies the path point type of `Bezier3`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier3\"] = 3] = \"Bezier3\";\n /**\n * Specifies the path point type of `Bezier`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier\"] = 3] = \"Bezier\";\n /**\n * Specifies the path point type of `PathTypeMask`.\n * @private\n */\n PathPointType[PathPointType[\"PathTypeMask\"] = 7] = \"PathTypeMask\";\n /**\n * Specifies the path point type of `DashMode`.\n * @private\n */\n PathPointType[PathPointType[\"DashMode\"] = 16] = \"DashMode\";\n /**\n * Specifies the path point type of `PathMarker`.\n * @private\n */\n PathPointType[PathPointType[\"PathMarker\"] = 32] = \"PathMarker\";\n /**\n * Specifies the path point type of `CloseSubpath`.\n * @private\n */\n PathPointType[PathPointType[\"CloseSubpath\"] = 128] = \"CloseSubpath\";\n})(PathPointType || (PathPointType = {}));\n","/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\nimport { PointF } from './../drawing/pdf-drawing';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * Class for representing Root `transformation matrix`.\n */\nvar PdfTransformationMatrix = /** @class */ (function () {\n function PdfTransformationMatrix(value) {\n /**\n * Value for `angle converting`.\n * @default 180.0 / Math.PI\n * @private\n */\n this.radDegFactor = 180.0 / Math.PI;\n if (typeof value === 'undefined') {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, 1.00, 0.00, 0.00);\n }\n else {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, -1.00, 0.00, 0.00);\n }\n }\n Object.defineProperty(PdfTransformationMatrix.prototype, \"matrix\", {\n // Properties\n /**\n * Gets or sets the `internal matrix object`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n set: function (value) {\n this.transformationMatrix = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.translate = function (offsetX, offsetY) {\n this.transformationMatrix.translate(offsetX, offsetY);\n };\n /**\n * `Scales` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.scale = function (scaleX, scaleY) {\n this.transformationMatrix.elements[0] = scaleX;\n this.transformationMatrix.elements[3] = scaleY;\n };\n /**\n * `Rotates` coordinate system in counterclockwise direction.\n * @private\n */\n PdfTransformationMatrix.prototype.rotate = function (angle) {\n //Convert from degree to radian \n angle = (angle * Math.PI) / 180;\n //Rotation \n this.transformationMatrix.elements[0] = Math.cos(angle);\n this.transformationMatrix.elements[1] = Math.sin(angle);\n this.transformationMatrix.elements[2] = -Math.sin(angle);\n this.transformationMatrix.elements[3] = Math.cos(angle);\n };\n // Overrides\n /**\n * Gets `PDF representation`.\n * @private\n */\n PdfTransformationMatrix.prototype.toString = function () {\n var builder = '';\n var whitespace = ' ';\n for (var i = 0, len = this.transformationMatrix.elements.length; i < len; i++) {\n var temp = this.matrix.elements[i];\n builder += PdfNumber.floatToString(this.transformationMatrix.elements[i]);\n builder += whitespace;\n }\n return builder;\n };\n // Implementation\n /**\n * `Multiplies` matrices (changes coordinate system.)\n * @private\n */\n PdfTransformationMatrix.prototype.multiply = function (matrix) {\n this.transformationMatrix.multiply(matrix.matrix);\n };\n /**\n * Converts `degrees to radians`.\n * @private\n */\n PdfTransformationMatrix.degreesToRadians = function (degreesX) {\n return this.degRadFactor * degreesX;\n };\n /**\n * Converts `radians to degrees`.\n * @private\n */\n PdfTransformationMatrix.prototype.radiansToDegrees = function (radians) {\n return this.radDegFactor * radians;\n };\n /**\n * `Clones` this instance of PdfTransformationMatrix.\n * @private\n */\n PdfTransformationMatrix.prototype.clone = function () {\n return this;\n };\n // Constants\n /**\n * Value for `angle converting`.\n * @default Math.PI / 180.0\n * @private\n */\n PdfTransformationMatrix.degRadFactor = Math.PI / 180.0;\n return PdfTransformationMatrix;\n}());\nexport { PdfTransformationMatrix };\nvar Matrix = /** @class */ (function () {\n function Matrix(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this.metrixElements = [];\n }\n else if (typeof arg1 === 'number') {\n this.metrixElements = [];\n this.metrixElements.push(arg1);\n this.metrixElements.push(arg2);\n this.metrixElements.push(arg3);\n this.metrixElements.push(arg4);\n this.metrixElements.push(arg5);\n this.metrixElements.push(arg6);\n }\n else {\n this.metrixElements = arg1;\n }\n }\n Object.defineProperty(Matrix.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `elements`.\n * @private\n */\n get: function () {\n return this.metrixElements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetX\", {\n /**\n * Gets the off set `X`.\n * @private\n */\n get: function () {\n return this.metrixElements[4];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetY\", {\n /**\n * Gets the off set `Y`.\n * @private\n */\n get: function () {\n return this.metrixElements[5];\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n Matrix.prototype.translate = function (offsetX, offsetY) {\n this.metrixElements[4] = offsetX;\n this.metrixElements[5] = offsetY;\n };\n /**\n * `Translates` the specified offset X.\n * @private\n */\n Matrix.prototype.transform = function (point) {\n var x = point.x;\n var y = point.y;\n var x2 = x * this.elements[0] + y * this.elements[2] + this.offsetX;\n var y2 = x * this.elements[1] + y * this.elements[3] + this.offsetY;\n return new PointF(x2, y2);\n };\n /**\n * `Multiplies matrices` (changes coordinate system.)\n * @private\n */\n Matrix.prototype.multiply = function (matrix) {\n var tempMatrix = [];\n tempMatrix.push(this.elements[0] * matrix.elements[0] + this.elements[1] * matrix.elements[2]);\n tempMatrix[1] = (this.elements[0] * matrix.elements[1] + this.elements[1] * matrix.elements[3]);\n tempMatrix[2] = (this.elements[2] * matrix.elements[0] + this.elements[3] * matrix.elements[2]);\n tempMatrix[3] = (this.elements[2] * matrix.elements[1] + this.elements[3] * matrix.elements[3]);\n tempMatrix[4] = (this.offsetX * matrix.elements[0] + this.offsetY * matrix.elements[2] + matrix.offsetX);\n tempMatrix[5] = (this.offsetX * matrix.elements[1] + this.offsetY * matrix.elements[3] + matrix.offsetY);\n for (var i = 0; i < tempMatrix.length; i++) {\n this.elements[i] = tempMatrix[i];\n }\n };\n // IDisposable Members\n /**\n * `Dispose` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.dispose = function () {\n this.metrixElements = null;\n };\n // ICloneable Members\n /**\n * `Clones` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.clone = function () {\n var m = new Matrix(this.metrixElements);\n return m;\n };\n return Matrix;\n}());\nexport { Matrix };\n","/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nvar ProcedureSets = /** @class */ (function () {\n function ProcedureSets() {\n /**\n * Specifies the `PDF` procedure set.\n * @private\n */\n this.pdf = 'PDF';\n /**\n * Specifies the `Text` procedure set.\n * @private\n */\n this.text = 'Text';\n /**\n * Specifies the `ImageB` procedure set.\n * @private\n */\n this.imageB = 'ImageB';\n /**\n * Specifies the `ImageC` procedure set.\n * @private\n */\n this.imageC = 'ImageC';\n /**\n * Specifies the `ImageI` procedure set.\n * @private\n */\n this.imageI = 'ImageI';\n }\n return ProcedureSets;\n}());\nexport { ProcedureSets };\n","/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @class */ (function () {\n function TemporaryDictionary() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.size = function () {\n return this.mKeys.length;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.add = function (key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.keys = function () {\n return this.mKeys;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.values = function () {\n return this.mValues;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.getValue = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.setValue = function (key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.remove = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.containsKey = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.clear = function () {\n this.mKeys = [];\n this.mValues = [];\n };\n return TemporaryDictionary;\n}());\nexport { TemporaryDictionary };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents a simple `transparency`.\n * @private\n */\nvar PdfTransparency = /** @class */ (function () {\n // Properties\n // /**\n // * Gets the `stroke` operation alpha value.\n // * @private\n // */\n // public get stroke() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.CA);\n // return result;\n // }\n // /**\n // * Gets the `fill` operation alpha value.\n // * @private\n // */\n // public get fill() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.ca);\n // return result;\n // }\n // /**\n // * Gets the `blend mode`.\n // * @private\n // */\n // public get mode() : PdfBlendMode {\n // let result : string = this.getName(this.dictionaryProperties.ca);\n // return PdfBlendMode.Normal;\n // }\n // Constructors\n /**\n * Initializes a new instance of the `Transparency` class.\n * @private\n */\n function PdfTransparency(stroke, fill, mode) {\n // Fields\n /**\n * Internal variable to store `dictionary`.\n * @default new PdfDictionary()\n * @private\n */\n this.dictionary = new PdfDictionary();\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new DictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.dictionary.items.setValue(this.dictionaryProperties.CA, new PdfNumber(stroke));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(fill));\n this.dictionary.items.setValue(this.dictionaryProperties.BM, new PdfName(mode.toString()));\n }\n Object.defineProperty(PdfTransparency.prototype, \"element\", {\n // // Implementation\n // /**\n // * Gets the `number value`.\n // * @private\n // */\n // private getNumber(keyName : string) : number {\n // let result : number = 0.0;\n // let numb : PdfNumber = this.dictionary.items.getValue(keyName) as PdfNumber;\n // result = numb.intValue;\n // return result;\n // }\n // /**\n // * Gets the `name value`.\n // * @private\n // */\n // private getName(keyName : string) : string {\n // let result : string = null;\n // let name : PdfName = this.dictionary.items.getValue(keyName) as PdfName;\n // result = name.value;\n // return result;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTransparency;\n}());\nexport { PdfTransparency };\n","/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nvar PdfAutomaticFieldInfoCollection = /** @class */ (function () {\n /**\n * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.\n * @private\n */\n function PdfAutomaticFieldInfoCollection() {\n /**\n * Internal variable to store instance of `pageNumberFields` class.\n * @private\n */\n this.automaticFieldsInformation = [];\n //\n }\n Object.defineProperty(PdfAutomaticFieldInfoCollection.prototype, \"automaticFields\", {\n /**\n * Gets the `page number fields collection`.\n * @private\n */\n get: function () {\n return this.automaticFieldsInformation;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /// Adds the specified field info.\n /**\n * Add page number field into collection.\n * @private\n */\n PdfAutomaticFieldInfoCollection.prototype.add = function (fieldInfo) {\n return this.automaticFields.push(fieldInfo);\n };\n return PdfAutomaticFieldInfoCollection;\n}());\nexport { PdfAutomaticFieldInfoCollection };\n","/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfGraphicsElement = /** @class */ (function () {\n // Constructors\n function PdfGraphicsElement() {\n //\n }\n /**\n * `Draws` the page number field.\n * @public\n */\n PdfGraphicsElement.prototype.drawHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0 || y !== 0);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n return PdfGraphicsElement;\n}());\nexport { PdfGraphicsElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfDocument } from './../pdf-document';\nimport { PdfGraphicsElement } from './../../graphics/figures/base/graphics-element';\nimport { PdfAutomaticFieldInfo } from './automatic-field-info';\n/**\n * Represents a fields which is calculated before the document saves.\n */\nvar PdfAutomaticField = /** @class */ (function (_super) {\n __extends(PdfAutomaticField, _super);\n // Constructors\n function PdfAutomaticField() {\n var _this = _super.call(this) || this;\n // Fields\n _this.internalBounds = new RectangleF(0, 0, 0, 0);\n _this.internalTemplateSize = new SizeF(0, 0);\n return _this;\n }\n Object.defineProperty(PdfAutomaticField.prototype, \"bounds\", {\n // Properties\n get: function () {\n return this.internalBounds;\n },\n set: function (value) {\n this.internalBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"size\", {\n get: function () {\n return new SizeF(this.bounds.width, this.bounds.height);\n },\n set: function (value) {\n this.bounds.width = value.width;\n this.bounds.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"location\", {\n get: function () {\n return new PointF(this.bounds.x, this.bounds.y);\n },\n set: function (value) {\n this.bounds.x = value.x;\n this.bounds.y = value.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"font\", {\n get: function () {\n return this.internalFont;\n },\n set: function (value) {\n this.internalFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"brush\", {\n get: function () {\n return this.internalBrush;\n },\n set: function (value) {\n this.internalBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"pen\", {\n get: function () {\n return this.internalPen;\n },\n set: function (value) {\n this.internalPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"stringFormat\", {\n get: function () {\n return this.internalStringFormat;\n },\n set: function (value) {\n this.internalStringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfAutomaticField.prototype.performDrawHelper = function (graphics, location, scalingX, scalingY) {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n var text = this.getValue(graphics);\n this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);\n }\n };\n PdfAutomaticField.prototype.draw = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n var location_1 = new PointF(0, 0);\n this.draw(arg1, location_1);\n }\n else if (arg2 instanceof PointF) {\n this.draw(arg1, arg2.x, arg2.y);\n }\n else {\n this.drawHelper(arg1, arg2, arg3);\n var info = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));\n arg1.automaticFields.add(info);\n }\n };\n PdfAutomaticField.prototype.getSize = function () {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n return this.internalTemplateSize;\n }\n else {\n return this.size;\n }\n };\n PdfAutomaticField.prototype.drawInternal = function (graphics) {\n //\n };\n /* tslint:disable */\n PdfAutomaticField.prototype.getBrush = function () {\n return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;\n };\n PdfAutomaticField.prototype.getFont = function () {\n return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;\n };\n /* tslint:enable */\n PdfAutomaticField.prototype.getPageFromGraphics = function (graphics) {\n if (typeof graphics.page !== 'undefined' && graphics.page !== null) {\n var page = graphics.page;\n return page;\n }\n else {\n var page = graphics.currentPage;\n return page;\n }\n };\n return PdfAutomaticField;\n}(PdfGraphicsElement));\nexport { PdfAutomaticField };\n","/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\nimport { PointF } from './../../drawing/pdf-drawing';\nimport { PdfAutomaticField } from './automatic-field';\n/**\n * Represents information about the automatic field.\n * @private\n */\nvar PdfAutomaticFieldInfo = /** @class */ (function () {\n function PdfAutomaticFieldInfo(field, location, scaleX, scaleY) {\n // Fields\n /**\n * Internal variable to store location of the field.\n * @private\n */\n this.pageNumberFieldLocation = new PointF();\n /**\n * Internal variable to store field.\n * @private\n */\n this.pageNumberField = null;\n /**\n * Internal variable to store x scaling factor.\n * @private\n */\n this.scaleX = 1;\n /**\n * Internal variable to store y scaling factor.\n * @private\n */\n this.scaleY = 1;\n if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {\n this.pageNumberField = field.field;\n this.pageNumberFieldLocation = field.location;\n this.scaleX = field.scalingX;\n this.scaleY = field.scalingY;\n }\n else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n }\n else {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n }\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"location\", {\n /* tslint:enable */\n // Properties\n /**\n * Gets or sets the location.\n * @private\n */\n get: function () {\n return this.pageNumberFieldLocation;\n },\n set: function (value) {\n this.pageNumberFieldLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"field\", {\n /**\n * Gets or sets the field.\n * @private\n */\n get: function () {\n return this.pageNumberField;\n },\n set: function (value) {\n this.pageNumberField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingX\", {\n /**\n * Gets or sets the scaling X factor.\n * @private\n */\n get: function () {\n return this.scaleX;\n },\n set: function (value) {\n this.scaleX = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingY\", {\n /**\n * Gets or sets the scaling Y factor.\n * @private\n */\n get: function () {\n return this.scaleY;\n },\n set: function (value) {\n this.scaleY = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAutomaticFieldInfo;\n}());\nexport { PdfAutomaticFieldInfo };\n","/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nvar ByteArray = /** @class */ (function () {\n /**\n * Initialize the new instance for `byte-array` class\n * @hidden\n * @private\n */\n function ByteArray(length) {\n /**\n * Current stream `position`.\n * @default 0\n * @private\n */\n this.mPosition = 0;\n this.buffer = new Uint8Array(length);\n this.dataView = new DataView(this.buffer.buffer);\n }\n Object.defineProperty(ByteArray.prototype, \"position\", {\n /**\n * Gets and Sets a current `position` of byte array.\n * @hidden\n * @private\n */\n get: function () {\n return this.mPosition;\n },\n set: function (value) {\n this.mPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Read` from current stream position.\n * @default 0\n * @hidden\n * @private\n */\n ByteArray.prototype.read = function (buffer, offset, count) {\n for (var index = offset; index < count; index++) {\n var position = this.position;\n buffer.buffer[index] = this.readByte(position);\n this.position++;\n }\n };\n /**\n * @hidden\n */\n ByteArray.prototype.getBuffer = function (index) {\n return this.buffer[index];\n };\n /**\n * @hidden\n */\n ByteArray.prototype.writeFromBase64String = function (base64) {\n var arr = this.encodedString(base64);\n this.buffer = arr;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var enc1;\n var enc2;\n var enc3;\n var enc4;\n var i = 0;\n var resultIndex = 0;\n var dataUrlPrefix = 'data:';\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n var output = new Uint8Array(totalLength | 0);\n while (i < input.length) {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output[resultIndex++] = chr1;\n output[resultIndex++] = chr2;\n output[resultIndex++] = chr3;\n }\n return output;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.readByte = function (offset) {\n return (this.buffer[offset]);\n };\n Object.defineProperty(ByteArray.prototype, \"internalBuffer\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ByteArray.prototype, \"count\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * 'readNextTwoBytes' stream\n * @hidden\n * @private\n */\n ByteArray.prototype.readNextTwoBytes = function (stream) {\n var data = stream.readByte(this.position);\n this.position++;\n data <<= 8;\n data |= stream.readByte(this.position);\n this.position++;\n return data;\n };\n return ByteArray;\n}());\nexport { ByteArray };\n","/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nvar TtfTableInfo = /** @class */ (function () {\n function TtfTableInfo() {\n }\n Object.defineProperty(TtfTableInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this table is empty.\n * @private\n */\n get: function () {\n var empty = (this.offset === this.length && this.length === this.checksum && this.checksum === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n return TtfTableInfo;\n}());\nexport { TtfTableInfo };\n","var TtfNameTable = /** @class */ (function () {\n function TtfNameTable() {\n }\n return TtfNameTable;\n}());\nexport { TtfNameTable };\n","/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nvar TtfNameRecord = /** @class */ (function () {\n function TtfNameRecord() {\n }\n return TtfNameRecord;\n}());\nexport { TtfNameRecord };\n","/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nvar TtfHeadTable = /** @class */ (function () {\n function TtfHeadTable() {\n }\n return TtfHeadTable;\n}());\nexport { TtfHeadTable };\n","var TtfMetrics = /** @class */ (function () {\n function TtfMetrics() {\n }\n Object.defineProperty(TtfMetrics.prototype, \"isItalic\", {\n //Properties\n /**\n * Gets a value indicating whether this instance is italic.\n */\n get: function () {\n return ((this.macStyle & 2) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfMetrics.prototype, \"isBold\", {\n /**\n * Gets a value indicating whether this instance is bold.\n */\n get: function () {\n return ((this.macStyle & 1) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n return TtfMetrics;\n}());\nexport { TtfMetrics };\n","/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nvar TtfHorizontalHeaderTable = /** @class */ (function () {\n function TtfHorizontalHeaderTable() {\n }\n return TtfHorizontalHeaderTable;\n}());\nexport { TtfHorizontalHeaderTable };\n","/**\n * TtfOS2Table.ts class for EJ2-PDF\n * The OS/2 table consists of a set of metrics that are required by Windows and OS/2.\n */\nvar TtfOS2Table = /** @class */ (function () {\n function TtfOS2Table() {\n }\n return TtfOS2Table;\n}());\nexport { TtfOS2Table };\n","/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nvar TtfPostTable = /** @class */ (function () {\n function TtfPostTable() {\n }\n return TtfPostTable;\n}());\nexport { TtfPostTable };\n","/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nvar TtfLongHorMetric = /** @class */ (function () {\n function TtfLongHorMetric() {\n }\n return TtfLongHorMetric;\n}());\nexport { TtfLongHorMetric };\n","/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfCmapSubTable = /** @class */ (function () {\n function TtfCmapSubTable() {\n }\n return TtfCmapSubTable;\n}());\nexport { TtfCmapSubTable };\n","/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nvar TtfCmapTable = /** @class */ (function () {\n function TtfCmapTable() {\n }\n return TtfCmapTable;\n}());\nexport { TtfCmapTable };\n","/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nvar TtfGlyphInfo = /** @class */ (function () {\n function TtfGlyphInfo() {\n }\n Object.defineProperty(TtfGlyphInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this TtfGlyphInfo is empty.\n */\n get: function () {\n var empty = (this.index === this.width && this.width === this.charCode && this.charCode === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n //IComparable implementation\n /**\n * Compares two WidthDescriptor objects.\n */\n TtfGlyphInfo.prototype.compareTo = function (obj) {\n var glyph = obj;\n return this.index - glyph.index;\n };\n return TtfGlyphInfo;\n}());\nexport { TtfGlyphInfo };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfLocaTable = /** @class */ (function () {\n function TtfLocaTable() {\n }\n return TtfLocaTable;\n}());\nexport { TtfLocaTable };\n","/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfAppleCmapSubTable = /** @class */ (function () {\n function TtfAppleCmapSubTable() {\n }\n return TtfAppleCmapSubTable;\n}());\nexport { TtfAppleCmapSubTable };\n","/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfMicrosoftCmapSubTable = /** @class */ (function () {\n function TtfMicrosoftCmapSubTable() {\n }\n return TtfMicrosoftCmapSubTable;\n}());\nexport { TtfMicrosoftCmapSubTable };\n","/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfTrimmedCmapSubTable = /** @class */ (function () {\n function TtfTrimmedCmapSubTable() {\n }\n return TtfTrimmedCmapSubTable;\n}());\nexport { TtfTrimmedCmapSubTable };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfGlyphHeader = /** @class */ (function () {\n function TtfGlyphHeader() {\n }\n return TtfGlyphHeader;\n}());\nexport { TtfGlyphHeader };\n","/**\n * Writes data in BigEndian order.\n */\nvar BigEndianWriter = /** @class */ (function () {\n //Constructors\n /**\n * Creates a new writer.\n */\n function BigEndianWriter(capacity) {\n //Constants\n /**\n * Size of Int32 type.\n */\n this.int32Size = 4;\n /**\n * Size of Int16 type.\n */\n this.int16Size = 2;\n /**\n * Size of long type.\n */\n this.int64Size = 8;\n this.bufferLength = capacity;\n this.buffer = [];\n }\n Object.defineProperty(BigEndianWriter.prototype, \"data\", {\n //Properties\n /**\n * Gets data written to the writer.\n */\n get: function () {\n if (this.buffer.length < this.bufferLength) {\n var length_1 = this.bufferLength - this.buffer.length;\n for (var i = 0; i < length_1; i++) {\n this.buffer.push(0);\n }\n }\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BigEndianWriter.prototype, \"position\", {\n /// \n /// Gets position of the internal buffer.\n /// \n get: function () {\n if (this.internalPosition === undefined || this.internalPosition === null) {\n this.internalPosition = 0;\n }\n return this.internalPosition;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes short value.\n */\n BigEndianWriter.prototype.writeShort = function (value) {\n var bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes int value.\n */\n BigEndianWriter.prototype.writeInt = function (value) {\n var i1 = (value & 0xff000000) >> 24;\n i1 = i1 < 0 ? 256 + i1 : i1;\n var i2 = (value & 0x00ff0000) >> 16;\n i2 = i2 < 0 ? 256 + i2 : i2;\n var i3 = (value & 0x0000ff00) >> 8;\n i3 = i3 < 0 ? 256 + i3 : i3;\n var i4 = value & 0x000000ff;\n i4 = i4 < 0 ? 256 + i4 : i4;\n var bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes u int value.\n */\n BigEndianWriter.prototype.writeUInt = function (value) {\n var buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(buff);\n };\n /**\n * Writes string value.\n */\n BigEndianWriter.prototype.writeString = function (value) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var bytes = [];\n for (var i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this.flush(bytes);\n };\n /**\n * Writes byte[] value.\n */\n BigEndianWriter.prototype.writeBytes = function (value) {\n this.flush(value);\n };\n // //Implementation\n BigEndianWriter.prototype.flush = function (buff) {\n if (buff === null) {\n throw new Error('Argument Null Exception : buff');\n }\n var position = this.position;\n for (var i = 0; i < buff.length; i++) {\n this.buffer[position] = buff[i];\n position++;\n }\n this.internalPosition += buff.length;\n };\n return BigEndianWriter;\n}());\nexport { BigEndianWriter };\n","/**\n * TtfReader.ts class for EJ2-PDF\n */\nimport { TtfTableInfo } from './ttf-table-info';\nimport { Dictionary } from './../../collections/dictionary';\nimport { TtfNameTable } from './ttf-name-table';\nimport { TtfNameRecord } from './ttf-name-record';\nimport { TtfHeadTable } from './ttf-head-table';\nimport { TtfMetrics } from './ttf-metrics';\nimport { TtfHorizontalHeaderTable } from './ttf-horizontal-header-table';\nimport { TtfOS2Table } from './ttf-OS2-Table';\nimport { TtfPostTable } from './ttf-post-table';\nimport { TtfLongHorMetric } from './ttf-long-hor-metric';\nimport { TtfCmapSubTable } from './ttf-cmap-sub-table';\nimport { TtfCmapTable } from './ttf-cmap-table';\nimport { TtfGlyphInfo } from './ttf-glyph-info';\nimport { TtfLocaTable } from './ttf-loca-table';\nimport { TtfAppleCmapSubTable } from './ttf-apple-cmap-sub-table';\nimport { TtfMicrosoftCmapSubTable } from './ttf-microsoft-cmap-sub-table';\nimport { TtfTrimmedCmapSubTable } from './ttf-trimmed-cmap-sub-table';\nimport { TtfGlyphHeader } from './ttf-glyph-header';\nimport { Rectangle } from './../../drawing/pdf-drawing';\nimport { StringTokenizer } from './string-tokenizer';\nimport { TtfCmapFormat, TtfCmapEncoding, TtfPlatformID } from './enum';\nimport { TtfMicrosoftEncodingID, TtfMacintoshEncodingID, TtfCompositeGlyphFlags } from './enum';\nimport { BigEndianWriter } from './../../input-output/big-endian-writer';\nvar TtfReader = /** @class */ (function () {\n //Constructors\n function TtfReader(fontData) {\n this.int32Size = 4;\n this.isTtcFont = false;\n this.isMacTtf = false;\n this.metricsName = '';\n this.isMacTTF = false;\n this.missedGlyphs = 0;\n this.tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this.entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this.fontData = fontData;\n this.initialize();\n }\n Object.defineProperty(TtfReader.prototype, \"macintosh\", {\n //Properties\n /**\n * Gets glyphs for Macintosh or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.macintoshDictionary === null || this.macintoshDictionary === undefined) {\n this.macintoshDictionary = new Dictionary();\n }\n return this.macintoshDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoft\", {\n /**\n * Gets glyphs for Microsoft or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.microsoftDictionary === null || this.microsoftDictionary === undefined) {\n this.microsoftDictionary = new Dictionary();\n }\n return this.microsoftDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"macintoshGlyphs\", {\n /**\n * Gets glyphs for Macintosh or Symbol fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMacintoshGlyphs === null || this.internalMacintoshGlyphs === undefined) {\n this.internalMacintoshGlyphs = new Dictionary();\n }\n return this.internalMacintoshGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoftGlyphs\", {\n /**\n * Gets glyphs for Microsoft Unicode fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMicrosoftGlyphs === null || this.internalMicrosoftGlyphs === undefined) {\n this.internalMicrosoftGlyphs = new Dictionary();\n }\n return this.internalMicrosoftGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n TtfReader.prototype.initialize = function () {\n if (this.metrics === undefined) {\n this.metrics = new TtfMetrics();\n }\n this.readFontDictionary();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.initializeFontName(nameTable);\n this.metrics.macStyle = headTable.macStyle;\n };\n TtfReader.prototype.readFontDictionary = function () {\n this.offset = 0;\n var version = this.checkPreambula();\n //this.offset += 4;\n var numTables = this.readInt16(this.offset);\n var searchRange = this.readInt16(this.offset);\n var entrySelector = this.readInt16(this.offset);\n var rangeShift = this.readInt16(this.offset);\n if (this.tableDirectory === undefined) {\n this.tableDirectory = new Dictionary();\n }\n for (var i = 0; i < numTables; ++i) {\n var table = new TtfTableInfo();\n var tableKey = this.readString(this.int32Size);\n table.checksum = this.readInt32(this.offset);\n table.offset = this.readInt32(this.offset);\n table.length = this.readInt32(this.offset);\n this.tableDirectory.setValue(tableKey, table);\n }\n this.lowestPosition = this.offset;\n if (!this.isTtcFont) {\n this.fixOffsets();\n }\n };\n TtfReader.prototype.fixOffsets = function () {\n var minOffset = Number.MAX_VALUE;\n // Search for a smallest offset and compare it with the lowest position found.\n var tableKeys = this.tableDirectory.keys();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n var offset = value.offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this.lowestPosition) {\n break;\n }\n }\n }\n var shift = minOffset - this.lowestPosition;\n if (shift !== 0) {\n var table = new Dictionary();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n value.offset -= shift;\n table.setValue(tableKeys[i], value);\n }\n this.tableDirectory = table;\n }\n };\n TtfReader.prototype.checkPreambula = function () {\n var version = this.readInt32(this.offset);\n this.isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this.isTtcFont = true;\n this.offset = 0;\n var fontTag = this.readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n //skip 4\n this.offset += 4;\n var ttcIdentificationNumber = this.readInt32(this.offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this.offset = this.readInt32(this.offset);\n version = this.readInt32(this.offset);\n }\n return version;\n };\n TtfReader.prototype.readNameTable = function () {\n var tableInfo = this.getTable('name');\n this.offset = tableInfo.offset;\n var table = new TtfNameTable();\n table.formatSelector = this.readUInt16(this.offset);\n table.recordsCount = this.readUInt16(this.offset);\n table.offset = this.readUInt16(this.offset);\n table.nameRecords = [];\n var recordSize = 12;\n var position = this.offset;\n for (var i = 0; i < table.recordsCount; i++) {\n this.offset = position;\n var record = new TtfNameRecord();\n record.platformID = this.readUInt16(this.offset);\n record.encodingID = this.readUInt16(this.offset);\n record.languageID = this.readUInt16(this.offset);\n record.nameID = this.readUInt16(this.offset);\n record.length = this.readUInt16(this.offset);\n record.offset = this.readUInt16(this.offset);\n this.offset = tableInfo.offset + table.offset + record.offset;\n var unicode = (record.platformID === 0 || record.platformID === 3);\n record.name = this.readString(record.length, unicode);\n table.nameRecords[i] = record;\n position += recordSize;\n }\n return table;\n };\n TtfReader.prototype.readHeadTable = function () {\n var tableInfo = this.getTable('head');\n this.offset = tableInfo.offset;\n var table = new TtfHeadTable();\n table.version = this.readFixed(this.offset);\n table.fontRevision = this.readFixed(this.offset);\n table.checkSumAdjustment = this.readUInt32(this.offset);\n table.magicNumber = this.readUInt32(this.offset);\n table.flags = this.readUInt16(this.offset);\n table.unitsPerEm = this.readUInt16(this.offset);\n table.created = this.readInt64(this.offset);\n table.modified = this.readInt64(this.offset);\n table.xMin = this.readInt16(this.offset);\n table.yMin = this.readInt16(this.offset);\n table.xMax = this.readInt16(this.offset);\n table.yMax = this.readInt16(this.offset);\n table.macStyle = this.readUInt16(this.offset);\n table.lowestReadableSize = this.readUInt16(this.offset);\n table.fontDirectionHint = this.readInt16(this.offset);\n table.indexToLocalFormat = this.readInt16(this.offset);\n table.glyphDataFormat = this.readInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readHorizontalHeaderTable = function () {\n var tableInfo = this.getTable('hhea');\n this.offset = tableInfo.offset;\n var table = new TtfHorizontalHeaderTable();\n table.version = this.readFixed(this.offset);\n table.ascender = this.readInt16(this.offset);\n table.descender = this.readInt16(this.offset);\n table.lineGap = this.readInt16(this.offset);\n table.advanceWidthMax = this.readUInt16(this.offset);\n table.minLeftSideBearing = this.readInt16(this.offset);\n table.minRightSideBearing = this.readInt16(this.offset);\n table.xMaxExtent = this.readInt16(this.offset);\n table.caretSlopeRise = this.readInt16(this.offset);\n table.caretSlopeRun = this.readInt16(this.offset);\n //skip 2 * 5\n this.offset += 10;\n table.metricDataFormat = this.readInt16(this.offset);\n table.numberOfHMetrics = this.readUInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readOS2Table = function () {\n var tableInfo = this.getTable('OS/2');\n this.offset = tableInfo.offset;\n var table = new TtfOS2Table();\n table.version = this.readUInt16(this.offset);\n table.xAvgCharWidth = this.readInt16(this.offset);\n table.usWeightClass = this.readUInt16(this.offset);\n table.usWidthClass = this.readUInt16(this.offset);\n table.fsType = this.readInt16(this.offset);\n table.ySubscriptXSize = this.readInt16(this.offset);\n table.ySubscriptYSize = this.readInt16(this.offset);\n table.ySubscriptXOffset = this.readInt16(this.offset);\n table.ySubscriptYOffset = this.readInt16(this.offset);\n table.ySuperscriptXSize = this.readInt16(this.offset);\n table.ySuperscriptYSize = this.readInt16(this.offset);\n table.ySuperscriptXOffset = this.readInt16(this.offset);\n table.ySuperscriptYOffset = this.readInt16(this.offset);\n table.yStrikeoutSize = this.readInt16(this.offset);\n table.yStrikeoutPosition = this.readInt16(this.offset);\n table.sFamilyClass = this.readInt16(this.offset);\n table.panose = this.readBytes(10);\n table.ulUnicodeRange1 = this.readUInt32(this.offset);\n table.ulUnicodeRange2 = this.readUInt32(this.offset);\n table.ulUnicodeRange3 = this.readUInt32(this.offset);\n table.ulUnicodeRange4 = this.readUInt32(this.offset);\n table.vendorIdentifier = this.readBytes(4);\n table.fsSelection = this.readUInt16(this.offset);\n table.usFirstCharIndex = this.readUInt16(this.offset);\n table.usLastCharIndex = this.readUInt16(this.offset);\n table.sTypoAscender = this.readInt16(this.offset);\n table.sTypoDescender = this.readInt16(this.offset);\n table.sTypoLineGap = this.readInt16(this.offset);\n table.usWinAscent = this.readUInt16(this.offset);\n table.usWinDescent = this.readUInt16(this.offset);\n table.ulCodePageRange1 = this.readUInt32(this.offset);\n table.ulCodePageRange2 = this.readUInt32(this.offset);\n if (table.version > 1) {\n table.sxHeight = this.readInt16(this.offset);\n table.sCapHeight = this.readInt16(this.offset);\n table.usDefaultChar = this.readUInt16(this.offset);\n table.usBreakChar = this.readUInt16(this.offset);\n table.usMaxContext = this.readUInt16(this.offset);\n }\n else {\n table.sxHeight = 0;\n table.sCapHeight = 0;\n table.usDefaultChar = 0;\n table.usBreakChar = 0;\n table.usMaxContext = 0;\n }\n return table;\n };\n TtfReader.prototype.readPostTable = function () {\n var tableInfo = this.getTable('post');\n this.offset = tableInfo.offset;\n var table = new TtfPostTable();\n table.formatType = this.readFixed(this.offset);\n table.italicAngle = this.readFixed(this.offset);\n table.underlinePosition = this.readInt16(this.offset);\n table.underlineThickness = this.readInt16(this.offset);\n table.isFixedPitch = this.readUInt32(this.offset);\n table.minType42 = this.readUInt32(this.offset);\n table.maxType42 = this.readUInt32(this.offset);\n table.minType1 = this.readUInt32(this.offset);\n table.maxType1 = this.readUInt32(this.offset);\n return table;\n };\n /**\n * Reads Width of the glyphs.\n */\n TtfReader.prototype.readWidthTable = function (glyphCount, unitsPerEm) {\n var tableInfo = this.getTable('hmtx');\n this.offset = tableInfo.offset;\n var width = [];\n for (var i = 0; i < glyphCount; i++) {\n var glyph = new TtfLongHorMetric();\n glyph.advanceWidth = this.readUInt16(this.offset);\n glyph.lsb = this.readInt16(this.offset);\n var glyphWidth = glyph.advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n };\n /**\n * Reads the cmap table.\n */\n TtfReader.prototype.readCmapTable = function () {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset;\n var table = new TtfCmapTable();\n table.version = this.readUInt16(this.offset);\n table.tablesCount = this.readUInt16(this.offset);\n var position = this.offset;\n var subTables = [];\n for (var i = 0; i < table.tablesCount; i++) {\n this.offset = position;\n var subTable = new TtfCmapSubTable();\n subTable.platformID = this.readUInt16(this.offset);\n subTable.encodingID = this.readUInt16(this.offset);\n subTable.offset = this.readUInt32(this.offset);\n position = this.offset;\n this.readCmapSubTable(subTable);\n subTables[i] = subTable;\n }\n return subTables;\n };\n /**\n * Reads the cmap sub table.\n */\n TtfReader.prototype.readCmapSubTable = function (subTable) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var format = this.readUInt16(this.offset);\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n var platform = (encoding === TtfCmapEncoding.Macintosh) ? TtfPlatformID.Macintosh : TtfPlatformID.Microsoft;\n if (encoding !== TtfCmapEncoding.Unknown) {\n switch (format) {\n case TtfCmapFormat.Apple:\n this.readAppleCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Microsoft:\n this.readMicrosoftCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Trimmed:\n this.readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readAppleCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfAppleCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n if (this.maxMacIndex === null || this.maxMacIndex === undefined) {\n this.maxMacIndex = 0;\n }\n for (var i = 0; i < 256; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readByte(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readMicrosoftCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var collection = (encoding === TtfCmapEncoding.Unicode) ? this.microsoft : this.macintosh;\n var table = new TtfMicrosoftCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.segCountX2 = this.readUInt16(this.offset);\n table.searchRange = this.readUInt16(this.offset);\n table.entrySelector = this.readUInt16(this.offset);\n table.rangeShift = this.readUInt16(this.offset);\n var segCount = table.segCountX2 / 2;\n table.endCount = this.readUshortArray(segCount);\n table.reservedPad = this.readUInt16(this.offset);\n table.startCount = this.readUshortArray(segCount);\n table.idDelta = this.readUshortArray(segCount);\n table.idRangeOffset = this.readUshortArray(segCount);\n var length = (table.length / 2 - 8) - (segCount * 4);\n table.glyphID = this.readUshortArray(length);\n // Process glyphIdArray array.\n var codeOffset = 0;\n var index = 0;\n for (var j = 0; j < segCount; j++) {\n for (var k = table.startCount[j]; k <= table.endCount[j] && k !== 65535; k++) {\n if (table.idRangeOffset[j] === 0) {\n codeOffset = (k + table.idDelta[j]) & 65535;\n }\n else {\n index = j + table.idRangeOffset[j] / 2 - segCount + k - table.startCount[j];\n if (index >= table.glyphID.length) {\n continue;\n }\n codeOffset = (table.glyphID[index] + table.idDelta[j]) & 65535;\n }\n var glyph = new TtfGlyphInfo();\n glyph.index = codeOffset;\n glyph.width = this.getWidth(glyph.index);\n var id = (encoding === TtfCmapEncoding.Symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph.charCode = id;\n collection.setValue(id, glyph);\n this.addGlyph(glyph, encoding);\n }\n }\n };\n /**\n * Reads Trimed cmap table.\n */\n TtfReader.prototype.readTrimmedCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfTrimmedCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.firstCode = this.readUInt16(this.offset);\n table.entryCount = this.readUInt16(this.offset);\n for (var i = 0; i < table.entryCount; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readUInt16(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i + table.firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n TtfReader.prototype.initializeFontName = function (nameTable) {\n for (var i = 0; i < nameTable.recordsCount; i++) {\n var record = nameTable.nameRecords[i];\n if (record.nameID === 1) {\n //font family\n this.metrics.fontFamily = record.name;\n }\n else if (record.nameID === 6) {\n //post script name\n this.metrics.postScriptName = record.name;\n }\n /* tslint:disable */\n if (this.metrics.fontFamily !== null && this.metrics.fontFamily !== undefined && this.metrics.postScriptName !== null && this.metrics.postScriptName !== undefined) {\n break;\n }\n /* tslint:disable */\n }\n };\n TtfReader.prototype.getTable = function (name) {\n // if (name === null) {\n // throw new Error('Argument Null Exception : name');\n // }\n var table = new TtfTableInfo();\n var obj;\n if (this.tableDirectory.containsKey(name)) {\n obj = this.tableDirectory.getValue(name);\n }\n if (obj !== null && obj !== undefined) {\n table = obj;\n }\n return table;\n };\n /**\n * Returns width of the glyph.\n */\n TtfReader.prototype.getWidth = function (glyphCode) {\n glyphCode = (glyphCode < this.width.length) ? glyphCode : this.width.length - 1;\n return this.width[glyphCode];\n };\n /**\n * Gets CMAP encoding based on platform ID and encoding ID.\n */\n /* tslint:disable */\n TtfReader.prototype.getCmapEncoding = function (platformID, encodingID) {\n var format = TtfCmapEncoding.Unknown;\n if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Undefined) {\n // When building a symbol font for Windows,\n // the platform ID should be 3 and the encoding ID should be 0.\n format = TtfCmapEncoding.Symbol;\n }\n else if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Unicode) {\n // When building a Unicode font for Windows,\n // the platform ID should be 3 and the encoding ID should be 1.\n format = TtfCmapEncoding.Unicode;\n }\n else if (platformID == TtfPlatformID.Macintosh && encodingID == TtfMacintoshEncodingID.Roman) {\n // When building a font that will be used on the Macintosh,\n // the platform ID should be 1 and the encoding ID should be 0.\n format = TtfCmapEncoding.Macintosh;\n }\n return format;\n };\n /* tslint:enable */\n /**\n * Adds glyph to the collection.\n */\n TtfReader.prototype.addGlyph = function (glyph, encoding) {\n var collection = null;\n switch (encoding) {\n case TtfCmapEncoding.Unicode:\n collection = this.microsoftGlyphs;\n break;\n case TtfCmapEncoding.Macintosh:\n case TtfCmapEncoding.Symbol:\n collection = this.macintoshGlyphs;\n break;\n }\n collection.setValue(glyph.index, glyph);\n };\n /**\n * Initializes metrics.\n */\n /* tslint:disable */\n TtfReader.prototype.initializeMetrics = function (nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n /* tslint:enable */\n // if (cmapTables === null) {\n // throw new Error('ArgumentNullException : cmapTables');\n // }\n this.initializeFontName(nameTable);\n // Get font encoding.\n var bSymbol = false;\n for (var i = 0; i < cmapTables.length; i++) {\n var subTable = cmapTables[i];\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n if (encoding === TtfCmapEncoding.Symbol) {\n bSymbol = true;\n break;\n }\n }\n this.metrics.isSymbol = bSymbol;\n this.metrics.macStyle = headTable.macStyle;\n this.metrics.isFixedPitch = (postTable.isFixedPitch !== 0);\n this.metrics.italicAngle = postTable.italicAngle;\n var factor = 1000 / headTable.unitsPerEm;\n this.metrics.winAscent = os2Table.sTypoAscender * factor;\n this.metrics.macAscent = horizontalHeadTable.ascender * factor;\n //m_metrics.MacAscent = os2Table.UsWinAscent * factor;\n // NOTE: This is stange workaround. The value is good if os2Table.SCapHeight != 0, otherwise it should be properly computed.\n this.metrics.capHeight = (os2Table.sCapHeight !== 0) ? os2Table.sCapHeight : 0.7 * headTable.unitsPerEm * factor;\n this.metrics.winDescent = os2Table.sTypoDescender * factor;\n this.metrics.macDescent = horizontalHeadTable.descender * factor;\n //m_metrics.MacDescent = -os2Table.UsWinDescent * factor;\n this.metrics.leading = (os2Table.sTypoAscender - os2Table.sTypoDescender + os2Table.sTypoLineGap) * factor;\n this.metrics.lineGap = Math.ceil(horizontalHeadTable.lineGap * factor);\n var left = headTable.xMin * factor;\n var top = Math.ceil(this.metrics.macAscent + this.metrics.lineGap);\n var right = headTable.xMax * factor;\n var bottom = this.metrics.macDescent;\n this.metrics.fontBox = new Rectangle(left, top, right, bottom);\n // NOTE: Strange!\n this.metrics.stemV = 80;\n this.metrics.widthTable = this.updateWidth();\n this.metrics.contains = this.tableDirectory.containsKey('CFF');\n this.metrics.subScriptSizeFactor = headTable.unitsPerEm / os2Table.ySubscriptYSize;\n this.metrics.superscriptSizeFactor = headTable.unitsPerEm / os2Table.ySuperscriptYSize;\n };\n /**\n * Updates chars structure which is used in the case of ansi encoding (256 bytes).\n */\n TtfReader.prototype.updateWidth = function () {\n var count = 256;\n var bytes = [];\n if (this.metrics.isSymbol) {\n for (var i = 0; i < count; i++) {\n var glyphInfo = this.getGlyph(String.fromCharCode(i));\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n else {\n var byteToProcess = [];\n var unknown = '?';\n var space = String.fromCharCode(32);\n for (var i = 0; i < count; i++) {\n byteToProcess[0] = i;\n var text = this.getString(byteToProcess, 0, byteToProcess.length);\n var ch = (text.length > 0) ? text[0] : unknown;\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n bytes[i] = glyphInfo.width;\n }\n else {\n glyphInfo = this.getGlyph(space);\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n }\n return bytes;\n };\n /**\n * Returns default glyph.\n */\n TtfReader.prototype.getDefaultGlyph = function () {\n var glyph = this.getGlyph(StringTokenizer.whiteSpace);\n return glyph;\n };\n /**\n * Reads unicode string from byte array.\n */\n TtfReader.prototype.getString = function (byteToProcess, start, length) {\n var result = '';\n for (var index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n };\n /**\n * Reads loca table.\n */\n TtfReader.prototype.readLocaTable = function (bShort) {\n var tableInfo = this.getTable('loca');\n this.offset = tableInfo.offset;\n var table = new TtfLocaTable();\n var buffer = null;\n if (bShort) {\n var len = tableInfo.length / 2;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt16(this.offset) * 2;\n }\n }\n else {\n var len = tableInfo.length / 4;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt32(this.offset);\n }\n }\n table.offsets = buffer;\n return table;\n };\n /**\n * Updates hash table of used glyphs.\n */\n TtfReader.prototype.updateGlyphChars = function (glyphChars, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Add zero key.\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n var clone = new Dictionary();\n var glyphCharKeys = glyphChars.keys();\n for (var i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[i], glyphChars.getValue(glyphCharKeys[i]));\n }\n for (var i = 0; i < glyphCharKeys.length; i++) {\n var nextKey = glyphCharKeys[i];\n this.processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n };\n /**\n * Checks if glyph is composite or not.\n */\n TtfReader.prototype.processCompositeGlyph = function (glyphChars, glyph, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Is in range.\n if (glyph < locaTable.offsets.length - 1) {\n var glyphOffset = locaTable.offsets[glyph];\n if (glyphOffset !== locaTable.offsets[glyph + 1]) {\n var tableInfo = this.getTable('glyf');\n this.offset = tableInfo.offset + glyphOffset;\n var glyphHeader = new TtfGlyphHeader();\n glyphHeader.numberOfContours = this.readInt16(this.offset);\n glyphHeader.xMin = this.readInt16(this.offset);\n glyphHeader.yMin = this.readInt16(this.offset);\n glyphHeader.xMax = this.readInt16(this.offset);\n glyphHeader.yMax = this.readInt16(this.offset);\n // Glyph is composite.\n if (glyphHeader.numberOfContours < 0) {\n var skipBytes = 0;\n var entry = true;\n while (entry) {\n var flags = this.readUInt16(this.offset);\n var glyphIndex = this.readUInt16(this.offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & TtfCompositeGlyphFlags.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & TtfCompositeGlyphFlags.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & TtfCompositeGlyphFlags.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this.offset += skipBytes;\n }\n }\n }\n }\n };\n /**\n * Creates new glyph tables based on chars that are used for output.\n */\n /* tslint:disable */\n TtfReader.prototype.generateGlyphTable = function (glyphChars, locaTable, newLocaTable, newGlyphTable) {\n /* tslint:enable */\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n newLocaTable = [];\n // Sorting used glyphs keys.\n var activeGlyphs = glyphChars.keys();\n activeGlyphs.sort(function (a, b) { return a - b; });\n var glyphSize = 0;\n for (var i = 0; i < activeGlyphs.length; i++) {\n var glyphIndex = activeGlyphs[i];\n if (locaTable.offsets.length > 0) {\n glyphSize += locaTable.offsets[glyphIndex + 1] - locaTable.offsets[glyphIndex];\n }\n }\n var glyphSizeAligned = this.align(glyphSize);\n newGlyphTable = [];\n for (var i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n var nextGlyphOffset = 0;\n var nextGlyphIndex = 0;\n var table = this.getTable('glyf');\n // Creating NewLocaTable - that would hold offsets for filtered glyphs.\n for (var i = 0; i < locaTable.offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[nextGlyphIndex] === i) {\n ++nextGlyphIndex;\n newLocaTable[i] = nextGlyphOffset;\n var oldGlyphOffset = locaTable.offsets[i];\n var oldNextGlyphOffset = locaTable.offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this.offset = table.offset + oldGlyphOffset;\n var result = this.read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n };\n /**\n * Updates new Loca table.\n */\n /* tslint:disable */\n TtfReader.prototype.updateLocaTable = function (newLocaTable, bLocaIsShort, newLocaTableOut) {\n /* tslint:enable */\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTable');\n }\n var size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n var count = this.align(size);\n //BigEndianWiter\n var writer = new BigEndianWriter(count);\n for (var i = 0; i < newLocaTable.length; i++) {\n var value = newLocaTable[i];\n if (bLocaIsShort) {\n value /= 2;\n writer.writeShort(value);\n }\n else {\n writer.writeInt(value);\n }\n }\n return { newLocaUpdated: writer.data, newLocaSize: size };\n };\n /**\n * Aligns number to be divisible on 4.\n */\n TtfReader.prototype.align = function (value) {\n return (value + 3) & (~3);\n };\n /**\n * Returns font program data.\n */\n /* tslint:disable */\n TtfReader.prototype.getFontProgram = function (newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var result = this.getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n var fontProgramLength = result.fontProgramLength;\n var numTables = result.numTables;\n var writer = new BigEndianWriter(fontProgramLength);\n writer.writeInt(0x10000);\n writer.writeShort(numTables);\n var entrySelector = this.entrySelectors[numTables];\n writer.writeShort((1 << (entrySelector & 31)) * 16);\n writer.writeShort(entrySelector);\n writer.writeShort((numTables - (1 << (entrySelector & 31))) * 16);\n // Writing to destination buffer - checksums && sizes of used tables.\n this.writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n // // Writing to destination buffer - used glyphs.\n this.writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer.data;\n };\n /* tslint:disable */\n TtfReader.prototype.getFontProgramLength = function (newLocaTableOut, newGlyphTable, numTables) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n // glyf and loca are used by default;\n numTables = 2;\n var tableNames = this.tableNames;\n var fontProgramLength = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n var table = this.getTable(tableName);\n if (!table.empty) {\n ++numTables;\n fontProgramLength += this.align(table.length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n var usedTablesSize = numTables * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n return { fontProgramLength: fontProgramLength, numTables: numTables };\n };\n /**\n * Writing to destination buffer - checksums and sizes of used tables.\n */\n /* tslint:disable */\n TtfReader.prototype.writeCheckSums = function (writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var usedTablesSize = numTables * 16 + (3 * 4);\n var nextTableSize = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n writer.writeString(tableName);\n if (tableName === 'glyf') {\n var checksum = this.calculateCheckSum(newGlyphTable);\n writer.writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n var checksum = this.calculateCheckSum(newLocaTableOut);\n writer.writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer.writeInt(tableInfo.checksum);\n nextTableSize = tableInfo.length;\n }\n writer.writeUInt(usedTablesSize);\n writer.writeUInt(nextTableSize);\n usedTablesSize += this.align(nextTableSize);\n }\n };\n /**\n * Gets checksum from source buffer.\n */\n TtfReader.prototype.calculateCheckSum = function (bytes) {\n if (bytes === null) {\n throw new Error('Argument Null Exception : bytes');\n }\n var pos = 0;\n var byte1 = 0;\n var byte2 = 0;\n var byte3 = 0;\n var byte4 = 0;\n for (var i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n var result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n return result;\n };\n /**\n * Writing to destination buffer - used glyphs.\n */\n TtfReader.prototype.writeGlyphs = function (writer, newLocaTable, newGlyphTable) {\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer.writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer.writeBytes(newLocaTable);\n }\n else {\n var count = this.align(tableInfo.length);\n var buff = [];\n for (var i_1 = 0; i_1 < count; i_1++) {\n buff.push(0);\n }\n this.offset = tableInfo.offset;\n var result = this.read(buff, 0, tableInfo.length);\n writer.writeBytes(result.buffer);\n }\n }\n };\n //public methods\n /**\n * Sets position value of font data.\n */\n TtfReader.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Creates font Internals\n * @private\n */\n TtfReader.prototype.createInternals = function () {\n this.metrics = new TtfMetrics();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.bIsLocaShort = (headTable.indexToLocalFormat === 0);\n var horizontalHeadTable = this.readHorizontalHeaderTable();\n var os2Table = this.readOS2Table();\n var postTable = this.readPostTable();\n this.width = this.readWidthTable(horizontalHeadTable.numberOfHMetrics, headTable.unitsPerEm);\n var subTables = this.readCmapTable();\n this.initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n };\n TtfReader.prototype.getGlyph = function (charCode) {\n if (typeof charCode === 'number') {\n var obj1 = null;\n if (!this.metrics.isSymbol && this.microsoftGlyphs != null) {\n if (this.microsoftGlyphs.containsKey(charCode)) {\n obj1 = this.microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this.metrics.isSymbol && this.macintoshGlyphs != null) {\n if (this.macintoshGlyphs.containsKey(charCode)) {\n obj1 = this.macintoshGlyphs.getValue(charCode);\n }\n }\n var glyph = (obj1 != null) ? obj1 : this.getDefaultGlyph();\n return glyph;\n }\n else {\n var obj = null;\n var code = charCode.charCodeAt(0);\n if (!this.metrics.isSymbol && this.microsoft !== null) {\n if (this.microsoft.containsKey(code)) {\n obj = this.microsoft.getValue(code);\n if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = true;\n }\n }\n else if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = false;\n }\n }\n else if (this.metrics.isSymbol && this.macintosh !== null || this.isMacTTF) {\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n if (this.maxMacIndex !== 0) {\n code %= this.maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this.isFontPresent = true;\n }\n }\n // Fix for StackOverFlow exception in XPS to PDF converter\n if (charCode === StringTokenizer.whiteSpace && obj === null) {\n obj = new TtfGlyphInfo();\n }\n var glyph = (obj !== null) ? obj : this.getDefaultGlyph();\n return glyph;\n }\n };\n /**\n * Gets hash table with chars indexed by glyph index.\n */\n TtfReader.prototype.getGlyphChars = function (chars) {\n if (chars === null || chars === undefined) {\n throw new Error('Argument Null Exception : chars');\n }\n var dictionary = new Dictionary();\n var charKeys = chars.keys();\n for (var i = 0; i < charKeys.length; i++) {\n var ch = charKeys[i];\n var glyph = this.getGlyph(ch);\n if (!glyph.empty) {\n dictionary.setValue(glyph.index, ch.charCodeAt(0));\n }\n }\n return dictionary;\n };\n /**\n * Gets all glyphs.\n */\n TtfReader.prototype.getAllGlyphs = function () {\n var allGlyphInfo = [];\n var info = new TtfGlyphInfo();\n var index = 0;\n for (var i = 0; i < this.width.length; i++) {\n var width = this.width[i];\n info.index = index;\n info.width = width;\n allGlyphInfo.push(info);\n index++;\n }\n return allGlyphInfo;\n };\n /**\n * Reads a font's program.\n * @private\n */\n TtfReader.prototype.readFontProgram = function (chars) {\n var glyphChars = this.getGlyphChars(chars);\n var locaTable = this.readLocaTable(this.bIsLocaShort);\n if (glyphChars.size() < chars.size()) {\n this.missedGlyphs = chars.size() - glyphChars.size();\n }\n this.updateGlyphChars(glyphChars, locaTable);\n /* tslint:disable */\n var result1 = this.generateGlyphTable(glyphChars, locaTable, null, null);\n /* tslint:enable */\n var glyphTableSize = result1.glyphTableSize;\n var newLocaTable = result1.newLocaTable;\n var newGlyphTable = result1.newGlyphTable;\n var result2 = this.updateLocaTable(newLocaTable, this.bIsLocaShort, null);\n var newLocaSize = result2.newLocaSize;\n var newLocaUpdated = result2.newLocaUpdated;\n var fontProgram = this.getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n };\n /**\n * Reconverts string to be in proper format saved into PDF file.\n */\n TtfReader.prototype.convertString = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n var glyph = '';\n var i = 0;\n for (var k = 0; k < text.length; k++) {\n var ch = text[k];\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n glyph += String.fromCharCode(glyphInfo.index);\n i++;\n }\n }\n return glyph;\n };\n /**\n * Gets char width.\n */\n TtfReader.prototype.getCharWidth = function (code) {\n var glyphInfo = this.getGlyph(code);\n glyphInfo = (!glyphInfo.empty) ? glyphInfo : this.getDefaultGlyph();\n var codeWidth = (!glyphInfo.empty) ? glyphInfo.width : 0;\n return codeWidth;\n };\n TtfReader.prototype.readString = function (length, isUnicode) {\n if (isUnicode === undefined) {\n return this.readString(length, false);\n }\n else {\n //let buffer : number[] = this.readBytes(length);\n var result = '';\n if (isUnicode) {\n for (var i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this.fontData[this.offset]);\n }\n this.offset += 1;\n }\n }\n else {\n for (var i = 0; i < length; i++) {\n result += String.fromCharCode(this.fontData[this.offset]);\n this.offset += 1;\n }\n }\n return result;\n }\n };\n TtfReader.prototype.readFixed = function (offset) {\n var integer = this.readInt16(offset);\n var sFraction = this.readInt16(offset + 2);\n var fraction = sFraction / 16384;\n return integer + fraction;\n };\n TtfReader.prototype.readInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n };\n TtfReader.prototype.readUInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n };\n // private readInt16(offset : number) : number {\n // let result : number = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n // this.offset += 2;\n // return result;\n // }\n TtfReader.prototype.readInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this.offset += 2;\n return result;\n };\n TtfReader.prototype.readInt64 = function (offset) {\n var low = this.readInt32(offset + 4);\n var n = this.readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n };\n TtfReader.prototype.readUInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) | this.fontData[offset + 1];\n this.offset += 2;\n return result;\n };\n /**\n * Reads ushort array.\n */\n TtfReader.prototype.readUshortArray = function (length) {\n var buffer = [];\n for (var i = 0; i < length; i++) {\n buffer[i] = this.readUInt16(this.offset);\n }\n return buffer;\n };\n TtfReader.prototype.readBytes = function (length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(this.fontData[this.offset]);\n this.offset += 1;\n }\n return result;\n };\n TtfReader.prototype.readByte = function (offset) {\n var result = this.fontData[offset];\n this.offset += 1;\n return result;\n };\n /**\n * Reads bytes to array in BigEndian order.\n * @private\n */\n TtfReader.prototype.read = function (buffer, index, count) {\n if (buffer === null) {\n throw new Error('Argument Null Exception : buffer');\n }\n var written = 0;\n var read = 0;\n do {\n for (var i = 0; (i < count - written) && (this.offset + i < this.fontData.length); i++) {\n buffer[index + i] = this.fontData[this.offset + i];\n }\n read = count - written;\n this.offset += read;\n written += read;\n } while (written < count);\n return { buffer: buffer, written: written };\n };\n return TtfReader;\n}());\nexport { TtfReader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFont } from './pdf-font';\nimport { PdfSubSuperScript } from './enum';\nimport { PdfArray } from './../../primitives/pdf-array';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar PdfFontMetrics = /** @class */ (function () {\n function PdfFontMetrics() {\n /**\n * `Line gap`.\n * @private\n */\n this.lineGap = 0;\n }\n // Public methods\n /**\n * Returns `ascent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getAscent = function (format) {\n var returnValue = this.ascent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `descent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getDescent = function (format) {\n var returnValue = this.descent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `Line gap` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getLineGap = function (format) {\n var returnValue = this.lineGap * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `height` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getHeight = function (format) {\n var height;\n var clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n var clearTypeFontCollection = [];\n for (var index = 0; index < clearTypeFonts.length; index++) {\n var font = clearTypeFonts[index];\n clearTypeFontCollection.push(font);\n }\n if (this.getDescent(format) < 0) {\n // if ((clearTypeFontCollection.indexOf(this.name.toLowerCase()) !== -1) && !this.isUnicodeFont) {\n // height = (this.GetAscent(format) - this.GetDescent(format) - this.GetLineGap(format));\n // } else {\n height = (this.getAscent(format) - this.getDescent(format) + this.getLineGap(format));\n // }\n }\n else {\n height = (this.getAscent(format) + this.getDescent(format) + this.getLineGap(format));\n }\n return height;\n };\n /**\n * Calculates `size` of the font depending on the subscript/superscript value.\n * @private\n */\n PdfFontMetrics.prototype.getSize = function (format) {\n var size = this.size;\n if (format != null) {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.SubScript:\n size /= this.subScriptSizeFactor;\n break;\n case PdfSubSuperScript.SuperScript:\n size /= this.superscriptSizeFactor;\n break;\n }\n }\n return size;\n };\n /**\n * `Clones` the metrics.\n * @private\n */\n PdfFontMetrics.prototype.clone = function () {\n var metrics = this;\n metrics.widthTable = WidthTable.clone();\n return metrics;\n };\n Object.defineProperty(PdfFontMetrics.prototype, \"widthTable\", {\n // Properies\n /**\n * Gets or sets the `width table`.\n * @private\n */\n get: function () {\n return this.internalWidthTable;\n },\n set: function (value) {\n this.internalWidthTable = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFontMetrics;\n}());\nexport { PdfFontMetrics };\nvar WidthTable = /** @class */ (function () {\n function WidthTable() {\n }\n /**\n * Static `clones` this instance of the WidthTable class.\n * @private\n */\n WidthTable.clone = function () {\n return null;\n };\n return WidthTable;\n}());\nexport { WidthTable };\nvar StandardWidthTable = /** @class */ (function (_super) {\n __extends(StandardWidthTable, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StandardWidthTable` class.\n * @private\n */\n function StandardWidthTable(widths) {\n var _this = _super.call(this) || this;\n if (widths == null) {\n throw new Error('ArgumentNullException:widths');\n }\n _this.widths = widths;\n return _this;\n }\n //Properties\n /**\n * Gets the `32 bit number` at the specified index.\n * @private\n */\n StandardWidthTable.prototype.items = function (index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('ArgumentOutOfRangeException:index, The character is not supported by the font.');\n }\n var result = this.widths[index];\n return result;\n };\n Object.defineProperty(StandardWidthTable.prototype, \"length\", {\n /**\n * Gets the `length` of the internal array.\n * @private\n */\n get: function () {\n return this.widths.length;\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * `Clones` this instance of the WidthTable class.\n * @private\n */\n StandardWidthTable.prototype.clone = function () {\n var swt = this;\n swt.widths = this.widths;\n return swt;\n };\n /**\n * Converts width table to a `PDF array`.\n * @private\n */\n StandardWidthTable.prototype.toArray = function () {\n var arr = new PdfArray(this.widths);\n return arr;\n };\n return StandardWidthTable;\n}(WidthTable));\nexport { StandardWidthTable };\n","/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nimport { ByteArray } from './../../graphics/images/index';\nimport { TtfReader } from './ttf-reader';\nimport { PdfDictionary, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler } from './../../primitives/pdf-dictionary';\nimport { SaveFontProgramEventHandler, SaveCmapEventHandler } from './../../primitives/pdf-stream';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfString } from './../../primitives/pdf-string';\nimport { PdfReferenceHolder } from './../../primitives/pdf-reference';\nimport { PdfFontMetrics } from './pdf-font-metrics';\nimport { StandardWidthTable } from './pdf-font-metrics';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { Dictionary } from './../../collections/dictionary';\nimport { FontDescriptorFlags } from './enum';\nimport { RectangleF } from './../../drawing/pdf-drawing';\nimport { Operators } from './../../input-output/pdf-operators';\nvar UnicodeTrueTypeFont = /** @class */ (function () {\n /* tslint:enable */\n //Constructors\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n function UnicodeTrueTypeFont(base64String, size) {\n // Fields\n this.nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Indicates whether the font program is compressed or not.\n * @private\n */\n this.isCompress = false;\n /**\n * Indicates whether the font is embedded or not.\n */\n this.isEmbedFont = false;\n /**\n * Cmap table's start prefix.\n */\n /* tslint:disable */\n this.cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + Operators.newLine + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange' + Operators.newLine;\n /* tslint:enable */\n /**\n * Cmap table's start suffix.\n */\n this.cmapEndCodespaceRange = 'endcodespacerange' + Operators.newLine;\n /**\n * Cmap's begin range marker.\n */\n this.cmapBeginRange = 'beginbfrange' + Operators.newLine;\n /**\n * Cmap's end range marker.\n */\n this.cmapEndRange = 'endbfrange' + Operators.newLine;\n /**\n * Cmap table's end\n */\n /* tslint:disable */\n this.cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + Operators.newLine;\n if (base64String === null || base64String === undefined) {\n throw new Error('ArgumentNullException:base64String');\n }\n this.fontSize = size;\n this.fontString = base64String;\n this.Initialize();\n }\n //Implementation\n /**\n * Returns width of the char symbol.\n */\n UnicodeTrueTypeFont.prototype.getCharWidth = function (charCode) {\n var codeWidth = this.ttfReader.getCharWidth(charCode);\n return codeWidth;\n };\n /**\n * Returns width of the text line.\n */\n UnicodeTrueTypeFont.prototype.getLineWidth = function (line) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n var width = 0;\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidth(ch);\n width += charWidth;\n }\n return width;\n };\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n UnicodeTrueTypeFont.prototype.Initialize = function () {\n var byteArray = new ByteArray(this.fontString.length);\n byteArray.writeFromBase64String(this.fontString);\n this.fontData = byteArray.internalBuffer;\n this.ttfReader = new TtfReader(this.fontData);\n this.ttfMetrics = this.ttfReader.metrics;\n };\n UnicodeTrueTypeFont.prototype.createInternals = function () {\n this.fontDictionary = new PdfDictionary();\n this.fontProgram = new PdfStream();\n this.cmap = new PdfStream();\n this.descendantFont = new PdfDictionary();\n this.metrics = new PdfFontMetrics();\n this.ttfReader.createInternals();\n this.ttfMetrics = this.ttfReader.metrics;\n this.initializeMetrics();\n // Create all the dictionaries of the font.\n this.subsetName = this.getFontName();\n this.createDescendantFont();\n this.createCmap();\n this.createFontDictionary();\n this.createFontProgram();\n };\n UnicodeTrueTypeFont.prototype.getInternals = function () {\n return this.fontDictionary;\n };\n /**\n * Initializes metrics.\n */\n UnicodeTrueTypeFont.prototype.initializeMetrics = function () {\n var ttfMetrics = this.ttfReader.metrics;\n this.metrics.ascent = ttfMetrics.macAscent;\n this.metrics.descent = ttfMetrics.macDescent;\n this.metrics.height = ttfMetrics.macAscent - ttfMetrics.macDescent + ttfMetrics.lineGap;\n this.metrics.name = ttfMetrics.fontFamily;\n this.metrics.postScriptName = ttfMetrics.postScriptName;\n this.metrics.size = this.fontSize;\n this.metrics.widthTable = new StandardWidthTable(ttfMetrics.widthTable);\n this.metrics.lineGap = ttfMetrics.lineGap;\n this.metrics.subScriptSizeFactor = ttfMetrics.subScriptSizeFactor;\n this.metrics.superscriptSizeFactor = ttfMetrics.superscriptSizeFactor;\n this.metrics.isBold = ttfMetrics.isBold;\n };\n /**\n * Gets random string.\n */\n UnicodeTrueTypeFont.prototype.getFontName = function () {\n var builder = '';\n var name;\n // if (this.isEmbed === false) {\n for (var i = 0; i < 6; i++) {\n var index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this.nameString[index];\n }\n builder += '+';\n // }\n builder += this.ttfReader.metrics.postScriptName;\n name = builder.toString();\n // if (name === '') {\n // name = this.ttfReader.metrics.fontFamily;\n // }\n name = this.formatName(name);\n return name;\n };\n /**\n * Generates name of the font.\n */\n UnicodeTrueTypeFont.prototype.formatName = function (fontName) {\n // if (fontName === null) {\n // throw new Error('ArgumentNullException : fontName');\n // }\n // if (fontName === '') {\n // throw new Error('ArgumentOutOfRangeException : fontName, Parameter can not be empty');\n // }\n var ret = fontName.replace('(', '#28');\n ret = ret.replace(')', '#29');\n ret = ret.replace('[', '#5B');\n ret = ret.replace(']', '#5D');\n ret = ret.replace('<', '#3C');\n ret = ret.replace('>', '#3E');\n ret = ret.replace('{', '#7B');\n ret = ret.replace('}', '#7D');\n ret = ret.replace('/', '#2F');\n ret = ret.replace('%', '#25');\n return ret.replace(' ', '#20');\n };\n /**\n * Creates descendant font.\n */\n UnicodeTrueTypeFont.prototype.createDescendantFont = function () {\n // Set property used to clone Font every time\n this.descendantFont.isFont = true;\n this.descendantFont.descendantFontBeginSave = new SaveDescendantFontEventHandler(this);\n this.descendantFont.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.descendantFont.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.cIDFontType2));\n this.descendantFont.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDToGIDMap, new PdfName(this.dictionaryProperties.identity));\n this.descendantFont.items.setValue(this.dictionaryProperties.dw, new PdfNumber(1000));\n this.fontDescriptor = this.createFontDescriptor();\n this.descendantFont.items.setValue(this.dictionaryProperties.fontDescriptor, new PdfReferenceHolder(this.fontDescriptor));\n var systemInfo = this.createSystemInfo();\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDSystemInfo, systemInfo);\n };\n /**\n * Creates font descriptor.\n */\n UnicodeTrueTypeFont.prototype.createFontDescriptor = function () {\n var descriptor = new PdfDictionary();\n var metrics = this.ttfReader.metrics;\n // Set property used to clone Font every time\n descriptor.isFont = true;\n descriptor.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.fontDescriptor));\n descriptor.items.setValue(this.dictionaryProperties.fontName, new PdfName(this.subsetName));\n descriptor.items.setValue(this.dictionaryProperties.flags, new PdfNumber(this.getDescriptorFlags()));\n descriptor.items.setValue(this.dictionaryProperties.fontBBox, PdfArray.fromRectangle(this.getBoundBox()));\n descriptor.items.setValue(this.dictionaryProperties.missingWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.stemV, new PdfNumber(metrics.stemV));\n descriptor.items.setValue(this.dictionaryProperties.italicAngle, new PdfNumber(metrics.italicAngle));\n descriptor.items.setValue(this.dictionaryProperties.capHeight, new PdfNumber(metrics.capHeight));\n descriptor.items.setValue(this.dictionaryProperties.ascent, new PdfNumber(metrics.winAscent));\n descriptor.items.setValue(this.dictionaryProperties.descent, new PdfNumber(metrics.winDescent));\n descriptor.items.setValue(this.dictionaryProperties.leading, new PdfNumber(metrics.leading));\n descriptor.items.setValue(this.dictionaryProperties.avgWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.fontFile2, new PdfReferenceHolder(this.fontProgram));\n descriptor.items.setValue(this.dictionaryProperties.maxWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.xHeight, new PdfNumber(0));\n descriptor.items.setValue(this.dictionaryProperties.stemH, new PdfNumber(0));\n return descriptor;\n };\n /**\n * Generates cmap.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createCmap = function () {\n this.cmap.cmapBeginSave = new SaveCmapEventHandler(this);\n };\n /**\n * Generates font dictionary.\n */\n UnicodeTrueTypeFont.prototype.createFontDictionary = function () {\n // Set property used to clone Font every time\n this.fontDictionary.isFont = true;\n this.fontDictionary.fontDictionaryBeginSave = new SaveFontDictionaryEventHandler(this);\n this.fontDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.fontDictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.fontDictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type0));\n this.fontDictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(this.dictionaryProperties.identityH));\n var descFonts = new PdfArray();\n var reference = new PdfReferenceHolder(this.descendantFont);\n // Set property used to clone Font every time\n descFonts.isFont = true;\n descFonts.add(reference);\n this.fontDictionary.items.setValue(this.dictionaryProperties.descendantFonts, descFonts);\n };\n /**\n * Creates font program.\n */\n UnicodeTrueTypeFont.prototype.createFontProgram = function () {\n this.fontProgram.fontProgramBeginSave = new SaveFontProgramEventHandler(this);\n };\n /**\n * Creates system info dictionary for CID font.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createSystemInfo = function () {\n var systemInfo = new PdfDictionary();\n systemInfo.items.setValue(this.dictionaryProperties.registry, new PdfString('Adobe'));\n systemInfo.items.setValue(this.dictionaryProperties.ordering, new PdfString(this.dictionaryProperties.identity));\n systemInfo.items.setValue(this.dictionaryProperties.supplement, new PdfNumber(0));\n return systemInfo;\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.descendantFontBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var width = this.getDescendantWidth();\n if (width !== null) {\n this.descendantFont.items.setValue(this.dictionaryProperties.w, width);\n }\n }\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.cmapBeginSave = function () {\n this.generateCmap();\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n /* tslint:disable */\n UnicodeTrueTypeFont.prototype.fontDictionaryBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0 && !this.fontDictionary.containsKey(this.dictionaryProperties.toUnicode)) {\n this.fontDictionary.items.setValue(this.dictionaryProperties.toUnicode, new PdfReferenceHolder(this.cmap));\n }\n };\n /* tslint:enable */\n /**\n * Runs before font program stream save.\n */\n UnicodeTrueTypeFont.prototype.fontProgramBeginSave = function () {\n this.isCompress = true;\n this.generateFontProgram();\n };\n /**\n * Gets width description pad array for c i d font.\n */\n UnicodeTrueTypeFont.prototype.getDescendantWidth = function () {\n var array = new PdfArray();\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphInfo = [];\n // if (!this.isEmbedFont) {\n var keys = this.usedChars.keys();\n for (var i = 0; i < keys.length; i++) {\n var chLen = keys[i];\n var glyph = this.ttfReader.getGlyph(chLen);\n if (glyph.empty) {\n continue;\n }\n glyphInfo.push(glyph);\n }\n // } else {\n // glyphInfo = this.ttfReader.getAllGlyphs();\n // }\n glyphInfo.sort(function (a, b) { return a.index - b.index; });\n var firstGlyphIndex = 0;\n var lastGlyphIndex = 0;\n var firstGlyphIndexWasSet = false;\n var widthDetails = new PdfArray();\n // if (!this.isEmbedFont) {\n for (var i = 0; i < glyphInfo.length; i++) {\n var glyph = glyphInfo[i];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph.index;\n lastGlyphIndex = glyph.index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // Add glyph index / width.\n array.add(new PdfNumber(firstGlyphIndex));\n if (i !== 0) {\n array.add(widthDetails);\n }\n firstGlyphIndex = glyph.index;\n widthDetails = new PdfArray();\n }\n widthDetails.add(new PdfNumber(glyph.width));\n if (i + 1 === glyphInfo.length) {\n array.add(new PdfNumber(firstGlyphIndex));\n array.add(widthDetails);\n }\n lastGlyphIndex = glyph.index;\n }\n // } else {\n // for (let i : number = 0; i < glyphInfo.length; i++) {\n // let glyph : TtfGlyphInfo = glyphInfo[i];\n // if (!firstGlyphIndexWasSet) {\n // firstGlyphIndexWasSet = true;\n // lastGlyphIndex = glyph.index - 1;\n // }\n // firstGlyphIndex = glyph.index;\n // if ((lastGlyphIndex + 1 === glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // // Add glyph index / width.\n // widthDetails.add(new PdfNumber(glyph.width));\n // array.add(new PdfNumber(firstGlyphIndex));\n // array.add(widthDetails);\n // widthDetails = new PdfArray();\n // }\n // lastGlyphIndex = glyph.index;\n // }\n // }\n }\n return array;\n };\n /**\n * Creates cmap.\n */\n UnicodeTrueTypeFont.prototype.generateCmap = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphChars = this.ttfReader.getGlyphChars(this.usedChars);\n if (glyphChars.size() > 0) {\n var keys = glyphChars.keys().sort();\n // add first and last glyph indexes\n var first = keys[0];\n var last = keys[keys.length - 1];\n var middlePart = this.toHexString(first, false) + this.toHexString(last, false) + Operators.newLine;\n var builder = '';\n builder += this.cmapPrefix;\n builder += middlePart;\n builder += this.cmapEndCodespaceRange;\n var nextRange = 0;\n for (var i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this.cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += Operators.whiteSpace;\n builder += this.cmapBeginRange;\n }\n nextRange -= 1;\n var key = keys[i];\n /* tslint:disable */\n builder += this.toHexString(key, true) + this.toHexString(key, true) + this.toHexString(glyphChars.getValue(key), true) + '\\n';\n /* tslint:enable */\n }\n builder += this.cmapSuffix;\n this.cmap.clearStream();\n this.cmap.isFont = true;\n this.cmap.write(builder);\n }\n }\n };\n /**\n * Generates font program.\n */\n UnicodeTrueTypeFont.prototype.generateFontProgram = function () {\n var fontProgram = null;\n this.usedChars = (this.usedChars === null || this.usedChars === undefined) ? new Dictionary() : this.usedChars;\n this.ttfReader.setOffset(0);\n fontProgram = this.ttfReader.readFontProgram(this.usedChars);\n this.fontProgram.clearStream();\n this.fontProgram.isFont = true;\n this.fontProgram.writeBytes(fontProgram);\n };\n /**\n * Calculates flags for the font descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getDescriptorFlags = function () {\n var flags = 0;\n var metrics = this.ttfReader.metrics;\n if (metrics.isFixedPitch) {\n flags |= FontDescriptorFlags.FixedPitch;\n }\n if (metrics.isSymbol) {\n flags |= FontDescriptorFlags.Symbolic;\n }\n else {\n flags |= FontDescriptorFlags.Nonsymbolic;\n }\n if (metrics.isItalic) {\n flags |= FontDescriptorFlags.Italic;\n }\n if (metrics.isBold) {\n flags |= FontDescriptorFlags.ForceBold;\n }\n return flags;\n };\n /**\n * Calculates BoundBox of the descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getBoundBox = function () {\n var rect = this.ttfReader.metrics.fontBox;\n var width = Math.abs(rect.right - rect.left);\n var height = Math.abs(rect.top - rect.bottom);\n var rectangle = new RectangleF(rect.left, rect.bottom, width, height);\n return rectangle;\n };\n /**\n * Converts integer of decimal system to hex integer.\n */\n UnicodeTrueTypeFont.prototype.toHexString = function (n, isCaseChange) {\n var s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n };\n /**\n * Stores used symbols.\n */\n UnicodeTrueTypeFont.prototype.setSymbols = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n if (this.usedChars === null || this.usedChars === undefined) {\n this.usedChars = new Dictionary();\n }\n for (var i = 0; i < text.length; i++) {\n var ch = text[i];\n this.usedChars.setValue(ch, String.fromCharCode(0));\n }\n // else {\n // if (text === null) {\n // throw new Error('Argument Null Exception : glyphs');\n // }\n // if (this.usedChars === null || this.usedChars === undefined) {\n // this.usedChars = new Dictionary();\n // }\n // for (let i : number = 0; i < text.length; i++) {\n // let glyphIndex : number = text[i];\n // let glyph : TtfGlyphInfo = this.ttfReader.getGlyph(glyphIndex);\n // if (!glyph == null) {\n // let c : string = glyph.charCode.toLocaleString();\n // this.usedChars.setValue(c, String.fromCharCode(0));\n // }\n // }\n // }\n if (this.isEmbedFont === false) {\n this.getDescendantWidth();\n }\n };\n return UnicodeTrueTypeFont;\n}());\nexport { UnicodeTrueTypeFont };\n","/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\nvar ArabicShapeRenderer = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function ArabicShapeRenderer() {\n //#region Constants\n this.arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'],\n ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'],\n ['\\u0625', '\\uFE87', '\\uFE88'],\n ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'],\n ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'],\n ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'],\n ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'],\n ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'],\n ['\\u062F', '\\uFEA9', '\\uFEAA'],\n ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'],\n ['\\u0632', '\\uFEAF', '\\uFEB0'],\n ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'],\n ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'],\n ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'],\n ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'],\n ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'],\n ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'],\n ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'],\n ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'],\n ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'],\n ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'],\n ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'],\n ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'],\n ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'],\n ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'],\n ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'],\n ['\\u0688', '\\uFB88', '\\uFB89'],\n ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'],\n ['\\u068E', '\\uFB86', '\\uFB87'],\n ['\\u0691', '\\uFB8C', '\\uFB8D'],\n ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'],\n ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'],\n ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'],\n ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'],\n ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'],\n ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'],\n ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'],\n ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'],\n ['\\u06C7', '\\uFBD7', '\\uFBD8'],\n ['\\u06C8', '\\uFBDB', '\\uFBDC'],\n ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'],\n ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'],\n ['\\u06D2', '\\uFBAE', '\\uFBAF'],\n ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this.alef = '\\u0627';\n this.alefHamza = '\\u0623';\n this.alefHamzaBelow = '\\u0625';\n this.alefMadda = '\\u0622';\n this.lam = '\\u0644';\n this.hamza = '\\u0621';\n this.zeroWidthJoiner = '\\u200D';\n this.hamzaAbove = '\\u0654';\n this.hamzaBelow = '\\u0655';\n this.wawHamza = '\\u0624';\n this.yehHamza = '\\u0626';\n this.waw = '\\u0648';\n this.alefMaksura = '\\u0649';\n this.yeh = '\\u064A';\n this.farsiYeh = '\\u06CC';\n this.shadda = '\\u0651';\n this.madda = '\\u0653';\n this.lwa = '\\uFEFB';\n this.lwawh = '\\uFEF7';\n this.lwawhb = '\\uFEF9';\n this.lwawm = '\\uFEF5';\n this.bwhb = '\\u06D3';\n this.fathatan = '\\u064B';\n this.superScriptalef = '\\u0670';\n this.vowel = 0x1;\n // #endregion\n //#region Fields\n this.arabicMapTable = new Dictionary();\n for (var i = 0; i < this.arabicCharTable.length; i++) {\n this.arabicMapTable.setValue(this.arabicCharTable[i][0], this.arabicCharTable[i]);\n }\n }\n //#endregion\n //#region implementation\n ArabicShapeRenderer.prototype.getCharacterShape = function (input, index) {\n if ((input >= this.hamza) && (input <= this.bwhb)) {\n var value = [];\n if (this.arabicMapTable.getValue(input)) {\n value = this.arabicMapTable.getValue(input);\n return value[index + 1];\n }\n }\n else if (input >= this.lwawm && input <= this.lwa) {\n return (input);\n }\n return input;\n };\n ArabicShapeRenderer.prototype.shape = function (text, level) {\n var builder = '';\n var str2 = '';\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c >= '؀' && c <= 'ۿ') {\n //if(c>= 0x0600.toString() && c<= 0x06FF.toString()) {\n str2 = str2 + c;\n }\n else {\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n str2 = '';\n }\n builder = builder + c;\n }\n }\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n }\n return builder.toString();\n };\n ArabicShapeRenderer.prototype.doShape = function (input, level) {\n var str = '';\n var ligature = 0;\n var len = 0;\n var i = 0;\n var next = '';\n var previous = new ArabicShape();\n var present = new ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this.ligature(next, present);\n if (ligature === 0) {\n var shapeCount = this.getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous.Shapes > 2) {\n len += 1;\n }\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n previous = present;\n present = new ArabicShape();\n present.Value = next;\n present.Shapes = shapeCount;\n present.Ligature++;\n }\n }\n len = (previous.Shapes > 2) ? 1 : 0;\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n str = this.append(str, present, level);\n return str.toString();\n };\n ArabicShapeRenderer.prototype.append = function (builder, shape, level) {\n if (shape.Value !== '') {\n builder = builder + shape.Value;\n shape.Ligature -= 1;\n if (shape.Type !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.Type;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n if (shape.vowel !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.vowel;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n }\n return builder;\n };\n ArabicShapeRenderer.prototype.ligature = function (value, shape) {\n if (shape.Value !== '') {\n var result = 0;\n if ((value >= this.fathatan && value <= this.hamzaBelow) || value === this.superScriptalef) {\n result = 1;\n if ((shape.vowel !== '') && (value !== this.shadda)) {\n result = 2;\n }\n if (value === this.shadda) {\n if (shape.Type == null) {\n shape.Type = this.shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this.hamzaBelow) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamzaBelow;\n result = 2;\n }\n else if (value === this.lwa) {\n shape.Value = this.lwawhb;\n result = 2;\n }\n else {\n shape.Type = this.hamzaBelow;\n }\n }\n else if (value === this.hamzaAbove) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamza;\n result = 2;\n }\n else if (shape.Value === this.lwa) {\n shape.Value = this.lwawh;\n result = 2;\n }\n else if (shape.Value === this.waw) {\n shape.Value = this.wawHamza;\n result = 2;\n }\n else if (shape.Value === this.yeh || shape.Value === this.alefMaksura || shape.Value === this.farsiYeh) {\n shape.Value = this.yehHamza;\n result = 2;\n }\n else {\n shape.Type = this.hamzaAbove;\n }\n }\n else if (value === this.madda) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefMadda;\n result = 2;\n }\n }\n else {\n shape.vowel = value;\n }\n if (result === 1) {\n shape.Ligature++;\n }\n return result;\n }\n if (shape.vowel !== '') {\n return 0;\n }\n if (shape.Value === this.lam) {\n if (value === this.alef) {\n shape.Value = this.lwa;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamza) {\n shape.Value = this.lwawh;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamzaBelow) {\n shape.Value = this.lwawhb;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefMadda) {\n shape.Value = this.lwawm;\n shape.Shapes = 2;\n result = 3;\n }\n }\n // else if (shape.Value === '') {\n // shape.Value = value;\n // shape.Shapes = this.getShapeCount(value);\n // result = 1;\n // }\n return result;\n }\n else {\n return 0;\n }\n };\n ArabicShapeRenderer.prototype.getShapeCount = function (shape) {\n if ((shape >= this.hamza) && (shape <= this.bwhb) && !((shape >= this.fathatan && shape <= this.hamzaBelow)\n || shape === this.superScriptalef)) {\n var c = [];\n if (this.arabicMapTable.getValue(shape)) {\n c = this.arabicMapTable.getValue(shape);\n return c.length - 1;\n }\n }\n else if (shape === this.zeroWidthJoiner) {\n return 4;\n }\n return 1;\n };\n return ArabicShapeRenderer;\n}());\nexport { ArabicShapeRenderer };\n//#endregion\n//#region Internals\nvar ArabicShape = /** @class */ (function () {\n function ArabicShape() {\n //#region Fields\n this.shapeValue = '';\n this.shapeType = '';\n this.shapeVowel = '';\n this.shapeLigature = 0;\n this.shapeShapes = 1;\n //#endregion\n }\n Object.defineProperty(ArabicShape.prototype, \"Value\", {\n //#endregion\n //#region Properties \n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeValue;\n },\n set: function (value) {\n this.shapeValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Type\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeType;\n },\n set: function (value) {\n this.shapeType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"vowel\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeVowel;\n },\n set: function (value) {\n this.shapeVowel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Ligature\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeLigature;\n },\n set: function (value) {\n this.shapeLigature = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Shapes\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeShapes;\n },\n set: function (value) {\n this.shapeShapes = value;\n },\n enumerable: true,\n configurable: true\n });\n return ArabicShape;\n}());\nexport { ArabicShape };\n//#endregion\n","/**\n * Bidi.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar Bidi = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function Bidi() {\n //#region Fields\n this.indexes = [];\n this.indexLevels = [];\n this.mirroringShapeCharacters = new Dictionary();\n this.update();\n }\n //#endregion\n //#region implementation\n Bidi.prototype.doMirrorShaping = function (text) {\n var result = [];\n for (var i = 0; i < text.length; i++) {\n if (((this.indexLevels[i] & 1) === 1) && this.mirroringShapeCharacters.containsKey(text[i].charCodeAt(0))) {\n result[i] = String.fromCharCode(this.mirroringShapeCharacters.getValue(text[i].charCodeAt(0)));\n }\n else {\n result[i] = text[i].toString();\n }\n }\n var res = '';\n for (var j = 0; j < result.length; j++) {\n res = res + result[j];\n }\n return res;\n };\n Bidi.prototype.getLogicalToVisualString = function (inputText, isRtl) {\n var rtlCharacters = new RtlCharacters();\n this.indexLevels = rtlCharacters.getVisualOrder(inputText, isRtl);\n this.setDefaultIndexLevel();\n this.doOrder(0, this.indexLevels.length - 1);\n var text = this.doMirrorShaping(inputText);\n //let text : string = inputText;\n var resultBuilder = '';\n for (var i = 0; i < this.indexes.length; i++) {\n var index = this.indexes[i];\n resultBuilder += text[index];\n }\n return resultBuilder.toString();\n };\n Bidi.prototype.setDefaultIndexLevel = function () {\n for (var i = 0; i < this.indexLevels.length; i++) {\n this.indexes[i] = i;\n }\n };\n Bidi.prototype.doOrder = function (sIndex, eIndex) {\n var max = this.indexLevels[sIndex];\n var min = max;\n var odd = max;\n var even = max;\n for (var i = sIndex + 1; i <= eIndex; ++i) {\n var data = this.indexLevels[i];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this.reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n var pstart = sIndex;\n /*tslint:disable:no-constant-condition */\n while (true) {\n while (pstart <= eIndex) {\n if (this.indexLevels[pstart] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n var pend = pstart + 1;\n while (pend <= eIndex) {\n if (this.indexLevels[pend] < max) {\n break;\n }\n pend += 1;\n }\n this.reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n };\n Bidi.prototype.reArrange = function (i, j) {\n var length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n var temp = this.indexes[i];\n this.indexes[i] = this.indexes[j];\n this.indexes[j] = temp;\n }\n };\n Bidi.prototype.update = function () {\n this.mirroringShapeCharacters.setValue(40, 41);\n this.mirroringShapeCharacters.setValue(41, 40);\n this.mirroringShapeCharacters.setValue(60, 62);\n this.mirroringShapeCharacters.setValue(62, 60);\n this.mirroringShapeCharacters.setValue(91, 93);\n this.mirroringShapeCharacters.setValue(93, 91);\n this.mirroringShapeCharacters.setValue(123, 125);\n this.mirroringShapeCharacters.setValue(125, 123);\n this.mirroringShapeCharacters.setValue(171, 187);\n this.mirroringShapeCharacters.setValue(187, 171);\n this.mirroringShapeCharacters.setValue(8249, 8250);\n this.mirroringShapeCharacters.setValue(8250, 8249);\n this.mirroringShapeCharacters.setValue(8261, 8262);\n this.mirroringShapeCharacters.setValue(8262, 8261);\n this.mirroringShapeCharacters.setValue(8317, 8318);\n this.mirroringShapeCharacters.setValue(8318, 8317);\n this.mirroringShapeCharacters.setValue(8333, 8334);\n this.mirroringShapeCharacters.setValue(8334, 8333);\n this.mirroringShapeCharacters.setValue(8712, 8715);\n this.mirroringShapeCharacters.setValue(8713, 8716);\n this.mirroringShapeCharacters.setValue(8714, 8717);\n this.mirroringShapeCharacters.setValue(8715, 8712);\n this.mirroringShapeCharacters.setValue(8716, 8713);\n this.mirroringShapeCharacters.setValue(8717, 8714);\n this.mirroringShapeCharacters.setValue(8725, 10741);\n this.mirroringShapeCharacters.setValue(8764, 8765);\n this.mirroringShapeCharacters.setValue(8765, 8764);\n this.mirroringShapeCharacters.setValue(8771, 8909);\n this.mirroringShapeCharacters.setValue(8786, 8787);\n this.mirroringShapeCharacters.setValue(8787, 8786);\n this.mirroringShapeCharacters.setValue(8788, 8789);\n this.mirroringShapeCharacters.setValue(8789, 8788);\n this.mirroringShapeCharacters.setValue(8804, 8805);\n this.mirroringShapeCharacters.setValue(8805, 8804);\n this.mirroringShapeCharacters.setValue(8806, 8807);\n this.mirroringShapeCharacters.setValue(8807, 8806);\n this.mirroringShapeCharacters.setValue(8808, 8809);\n this.mirroringShapeCharacters.setValue(8809, 8808);\n this.mirroringShapeCharacters.setValue(8810, 8811);\n this.mirroringShapeCharacters.setValue(8811, 8810);\n this.mirroringShapeCharacters.setValue(8814, 8815);\n this.mirroringShapeCharacters.setValue(8815, 8814);\n this.mirroringShapeCharacters.setValue(8816, 8817);\n this.mirroringShapeCharacters.setValue(8817, 8816);\n this.mirroringShapeCharacters.setValue(8818, 8819);\n this.mirroringShapeCharacters.setValue(8819, 8818);\n this.mirroringShapeCharacters.setValue(8820, 8821);\n this.mirroringShapeCharacters.setValue(8821, 8820);\n this.mirroringShapeCharacters.setValue(8822, 8823);\n this.mirroringShapeCharacters.setValue(8823, 8822);\n this.mirroringShapeCharacters.setValue(8824, 8825);\n this.mirroringShapeCharacters.setValue(8825, 8824);\n this.mirroringShapeCharacters.setValue(8826, 8827);\n this.mirroringShapeCharacters.setValue(8827, 8826);\n this.mirroringShapeCharacters.setValue(8828, 8829);\n this.mirroringShapeCharacters.setValue(8829, 8828);\n this.mirroringShapeCharacters.setValue(8830, 8831);\n this.mirroringShapeCharacters.setValue(8831, 8830);\n this.mirroringShapeCharacters.setValue(8832, 8833);\n this.mirroringShapeCharacters.setValue(8833, 8832);\n this.mirroringShapeCharacters.setValue(8834, 8835);\n this.mirroringShapeCharacters.setValue(8835, 8834);\n this.mirroringShapeCharacters.setValue(8836, 8837);\n this.mirroringShapeCharacters.setValue(8837, 8836);\n this.mirroringShapeCharacters.setValue(8838, 8839);\n this.mirroringShapeCharacters.setValue(8839, 8838);\n this.mirroringShapeCharacters.setValue(8840, 8841);\n this.mirroringShapeCharacters.setValue(8841, 8840);\n this.mirroringShapeCharacters.setValue(8842, 8843);\n this.mirroringShapeCharacters.setValue(8843, 8842);\n this.mirroringShapeCharacters.setValue(8847, 8848);\n this.mirroringShapeCharacters.setValue(8848, 8847);\n this.mirroringShapeCharacters.setValue(8849, 8850);\n this.mirroringShapeCharacters.setValue(8850, 8849);\n this.mirroringShapeCharacters.setValue(8856, 10680);\n this.mirroringShapeCharacters.setValue(8866, 8867);\n this.mirroringShapeCharacters.setValue(8867, 8866);\n this.mirroringShapeCharacters.setValue(8870, 10974);\n this.mirroringShapeCharacters.setValue(8872, 10980);\n this.mirroringShapeCharacters.setValue(8873, 10979);\n this.mirroringShapeCharacters.setValue(8875, 10981);\n this.mirroringShapeCharacters.setValue(8880, 8881);\n this.mirroringShapeCharacters.setValue(8881, 8880);\n this.mirroringShapeCharacters.setValue(8882, 8883);\n this.mirroringShapeCharacters.setValue(8883, 8882);\n this.mirroringShapeCharacters.setValue(8884, 8885);\n this.mirroringShapeCharacters.setValue(8885, 8884);\n /*tslint:disable:max-func-body-length */\n this.mirroringShapeCharacters.setValue(8886, 8887);\n this.mirroringShapeCharacters.setValue(8887, 8886);\n this.mirroringShapeCharacters.setValue(8905, 8906);\n this.mirroringShapeCharacters.setValue(8906, 8905);\n this.mirroringShapeCharacters.setValue(8907, 8908);\n this.mirroringShapeCharacters.setValue(8908, 8907);\n this.mirroringShapeCharacters.setValue(8909, 8771);\n this.mirroringShapeCharacters.setValue(8912, 8913);\n this.mirroringShapeCharacters.setValue(8913, 8912);\n this.mirroringShapeCharacters.setValue(8918, 8919);\n this.mirroringShapeCharacters.setValue(8919, 8918);\n this.mirroringShapeCharacters.setValue(8920, 8921);\n this.mirroringShapeCharacters.setValue(8921, 8920);\n this.mirroringShapeCharacters.setValue(8922, 8923);\n this.mirroringShapeCharacters.setValue(8923, 8922);\n this.mirroringShapeCharacters.setValue(8924, 8925);\n this.mirroringShapeCharacters.setValue(8925, 8924);\n this.mirroringShapeCharacters.setValue(8926, 8927);\n this.mirroringShapeCharacters.setValue(8927, 8926);\n this.mirroringShapeCharacters.setValue(8928, 8929);\n this.mirroringShapeCharacters.setValue(8929, 8928);\n this.mirroringShapeCharacters.setValue(8930, 8931);\n this.mirroringShapeCharacters.setValue(8931, 8930);\n this.mirroringShapeCharacters.setValue(8932, 8933);\n this.mirroringShapeCharacters.setValue(8933, 8932);\n this.mirroringShapeCharacters.setValue(8934, 8935);\n this.mirroringShapeCharacters.setValue(8935, 8934);\n this.mirroringShapeCharacters.setValue(8936, 8937);\n this.mirroringShapeCharacters.setValue(8937, 8936);\n this.mirroringShapeCharacters.setValue(8938, 8939);\n this.mirroringShapeCharacters.setValue(8939, 8938);\n this.mirroringShapeCharacters.setValue(8940, 8941);\n this.mirroringShapeCharacters.setValue(8941, 8940);\n this.mirroringShapeCharacters.setValue(8944, 8945);\n this.mirroringShapeCharacters.setValue(8945, 8944);\n this.mirroringShapeCharacters.setValue(8946, 8954);\n this.mirroringShapeCharacters.setValue(8947, 8955);\n this.mirroringShapeCharacters.setValue(8948, 8956);\n this.mirroringShapeCharacters.setValue(8950, 8957);\n this.mirroringShapeCharacters.setValue(8951, 8958);\n this.mirroringShapeCharacters.setValue(8954, 8946);\n this.mirroringShapeCharacters.setValue(8955, 8947);\n this.mirroringShapeCharacters.setValue(8956, 8948);\n this.mirroringShapeCharacters.setValue(8957, 8950);\n this.mirroringShapeCharacters.setValue(8958, 8951);\n this.mirroringShapeCharacters.setValue(8968, 8969);\n this.mirroringShapeCharacters.setValue(8969, 8968);\n this.mirroringShapeCharacters.setValue(8970, 8971);\n this.mirroringShapeCharacters.setValue(8971, 8970);\n this.mirroringShapeCharacters.setValue(9001, 9002);\n this.mirroringShapeCharacters.setValue(9002, 9001);\n this.mirroringShapeCharacters.setValue(10088, 10089);\n this.mirroringShapeCharacters.setValue(10089, 10088);\n this.mirroringShapeCharacters.setValue(10090, 10091);\n this.mirroringShapeCharacters.setValue(10091, 10090);\n this.mirroringShapeCharacters.setValue(10092, 10093);\n this.mirroringShapeCharacters.setValue(10093, 10092);\n this.mirroringShapeCharacters.setValue(10094, 10095);\n this.mirroringShapeCharacters.setValue(10095, 10094);\n this.mirroringShapeCharacters.setValue(10096, 10097);\n this.mirroringShapeCharacters.setValue(10097, 10096);\n this.mirroringShapeCharacters.setValue(10098, 10099);\n this.mirroringShapeCharacters.setValue(10099, 10098);\n this.mirroringShapeCharacters.setValue(10100, 10101);\n this.mirroringShapeCharacters.setValue(10101, 10100);\n this.mirroringShapeCharacters.setValue(10197, 10198);\n this.mirroringShapeCharacters.setValue(10198, 10197);\n this.mirroringShapeCharacters.setValue(10205, 10206);\n this.mirroringShapeCharacters.setValue(10206, 10205);\n this.mirroringShapeCharacters.setValue(10210, 10211);\n this.mirroringShapeCharacters.setValue(10211, 10210);\n this.mirroringShapeCharacters.setValue(10212, 10213);\n this.mirroringShapeCharacters.setValue(10213, 10212);\n this.mirroringShapeCharacters.setValue(10214, 10215);\n this.mirroringShapeCharacters.setValue(10215, 10214);\n this.mirroringShapeCharacters.setValue(10216, 10217);\n this.mirroringShapeCharacters.setValue(10217, 10216);\n this.mirroringShapeCharacters.setValue(10218, 10219);\n this.mirroringShapeCharacters.setValue(10219, 10218);\n this.mirroringShapeCharacters.setValue(10627, 10628);\n this.mirroringShapeCharacters.setValue(10628, 10627);\n this.mirroringShapeCharacters.setValue(10629, 10630);\n this.mirroringShapeCharacters.setValue(10630, 10629);\n this.mirroringShapeCharacters.setValue(10631, 10632);\n this.mirroringShapeCharacters.setValue(10632, 10631);\n this.mirroringShapeCharacters.setValue(10633, 10634);\n this.mirroringShapeCharacters.setValue(10634, 10633);\n this.mirroringShapeCharacters.setValue(10635, 10636);\n this.mirroringShapeCharacters.setValue(10636, 10635);\n this.mirroringShapeCharacters.setValue(10637, 10640);\n this.mirroringShapeCharacters.setValue(10638, 10639);\n this.mirroringShapeCharacters.setValue(10639, 10638);\n this.mirroringShapeCharacters.setValue(10640, 10637);\n this.mirroringShapeCharacters.setValue(10641, 10642);\n this.mirroringShapeCharacters.setValue(10642, 10641);\n this.mirroringShapeCharacters.setValue(10643, 10644);\n this.mirroringShapeCharacters.setValue(10644, 10643);\n this.mirroringShapeCharacters.setValue(10645, 10646);\n this.mirroringShapeCharacters.setValue(10646, 10645);\n this.mirroringShapeCharacters.setValue(10647, 10648);\n this.mirroringShapeCharacters.setValue(10648, 10647);\n this.mirroringShapeCharacters.setValue(10680, 8856);\n this.mirroringShapeCharacters.setValue(10688, 10689);\n this.mirroringShapeCharacters.setValue(10689, 10688);\n this.mirroringShapeCharacters.setValue(10692, 10693);\n this.mirroringShapeCharacters.setValue(10693, 10692);\n this.mirroringShapeCharacters.setValue(10703, 10704);\n this.mirroringShapeCharacters.setValue(10704, 10703);\n this.mirroringShapeCharacters.setValue(10705, 10706);\n this.mirroringShapeCharacters.setValue(10706, 10705);\n this.mirroringShapeCharacters.setValue(10708, 10709);\n this.mirroringShapeCharacters.setValue(10709, 10708);\n this.mirroringShapeCharacters.setValue(10712, 10713);\n this.mirroringShapeCharacters.setValue(10713, 10712);\n this.mirroringShapeCharacters.setValue(10714, 10715);\n this.mirroringShapeCharacters.setValue(10715, 10714);\n this.mirroringShapeCharacters.setValue(10741, 8725);\n this.mirroringShapeCharacters.setValue(10744, 10745);\n this.mirroringShapeCharacters.setValue(10745, 10744);\n this.mirroringShapeCharacters.setValue(10748, 10749);\n this.mirroringShapeCharacters.setValue(10749, 10748);\n this.mirroringShapeCharacters.setValue(10795, 10796);\n this.mirroringShapeCharacters.setValue(10796, 10795);\n this.mirroringShapeCharacters.setValue(10797, 10796);\n this.mirroringShapeCharacters.setValue(10798, 10797);\n this.mirroringShapeCharacters.setValue(10804, 10805);\n this.mirroringShapeCharacters.setValue(10805, 10804);\n this.mirroringShapeCharacters.setValue(10812, 10813);\n this.mirroringShapeCharacters.setValue(10813, 10812);\n this.mirroringShapeCharacters.setValue(10852, 10853);\n this.mirroringShapeCharacters.setValue(10853, 10852);\n this.mirroringShapeCharacters.setValue(10873, 10874);\n this.mirroringShapeCharacters.setValue(10874, 10873);\n this.mirroringShapeCharacters.setValue(10877, 10878);\n this.mirroringShapeCharacters.setValue(10878, 10877);\n this.mirroringShapeCharacters.setValue(10879, 10880);\n this.mirroringShapeCharacters.setValue(10880, 10879);\n this.mirroringShapeCharacters.setValue(10881, 10882);\n this.mirroringShapeCharacters.setValue(10882, 10881);\n this.mirroringShapeCharacters.setValue(10883, 10884);\n this.mirroringShapeCharacters.setValue(10884, 10883);\n this.mirroringShapeCharacters.setValue(10891, 10892);\n this.mirroringShapeCharacters.setValue(10892, 10891);\n this.mirroringShapeCharacters.setValue(10897, 10898);\n this.mirroringShapeCharacters.setValue(10898, 10897);\n this.mirroringShapeCharacters.setValue(10899, 10900);\n this.mirroringShapeCharacters.setValue(10900, 10899);\n this.mirroringShapeCharacters.setValue(10901, 10902);\n this.mirroringShapeCharacters.setValue(10902, 10901);\n this.mirroringShapeCharacters.setValue(10903, 10904);\n this.mirroringShapeCharacters.setValue(10904, 10903);\n this.mirroringShapeCharacters.setValue(10905, 10906);\n this.mirroringShapeCharacters.setValue(10906, 10905);\n this.mirroringShapeCharacters.setValue(10907, 10908);\n this.mirroringShapeCharacters.setValue(10908, 10907);\n this.mirroringShapeCharacters.setValue(10913, 10914);\n this.mirroringShapeCharacters.setValue(10914, 10913);\n this.mirroringShapeCharacters.setValue(10918, 10919);\n this.mirroringShapeCharacters.setValue(10919, 10918);\n this.mirroringShapeCharacters.setValue(10920, 10921);\n this.mirroringShapeCharacters.setValue(10921, 10920);\n this.mirroringShapeCharacters.setValue(10922, 10923);\n this.mirroringShapeCharacters.setValue(10923, 10922);\n this.mirroringShapeCharacters.setValue(10924, 10925);\n this.mirroringShapeCharacters.setValue(10925, 10924);\n this.mirroringShapeCharacters.setValue(10927, 10928);\n this.mirroringShapeCharacters.setValue(10928, 10927);\n this.mirroringShapeCharacters.setValue(10931, 10932);\n this.mirroringShapeCharacters.setValue(10932, 10931);\n this.mirroringShapeCharacters.setValue(10939, 10940);\n this.mirroringShapeCharacters.setValue(10940, 10939);\n this.mirroringShapeCharacters.setValue(10941, 10942);\n this.mirroringShapeCharacters.setValue(10942, 10941);\n this.mirroringShapeCharacters.setValue(10943, 10944);\n this.mirroringShapeCharacters.setValue(10944, 10943);\n this.mirroringShapeCharacters.setValue(10945, 10946);\n this.mirroringShapeCharacters.setValue(10946, 10945);\n this.mirroringShapeCharacters.setValue(10947, 10948);\n this.mirroringShapeCharacters.setValue(10948, 10947);\n this.mirroringShapeCharacters.setValue(10949, 10950);\n this.mirroringShapeCharacters.setValue(10950, 10949);\n this.mirroringShapeCharacters.setValue(10957, 10958);\n this.mirroringShapeCharacters.setValue(10958, 10957);\n this.mirroringShapeCharacters.setValue(10959, 10960);\n this.mirroringShapeCharacters.setValue(10960, 10959);\n this.mirroringShapeCharacters.setValue(10961, 10962);\n this.mirroringShapeCharacters.setValue(10962, 10961);\n this.mirroringShapeCharacters.setValue(10963, 10964);\n this.mirroringShapeCharacters.setValue(10964, 10963);\n this.mirroringShapeCharacters.setValue(10965, 10966);\n this.mirroringShapeCharacters.setValue(10966, 10965);\n this.mirroringShapeCharacters.setValue(10974, 8870);\n this.mirroringShapeCharacters.setValue(10979, 8873);\n this.mirroringShapeCharacters.setValue(10980, 8872);\n this.mirroringShapeCharacters.setValue(10981, 8875);\n this.mirroringShapeCharacters.setValue(10988, 10989);\n this.mirroringShapeCharacters.setValue(10989, 10988);\n this.mirroringShapeCharacters.setValue(10999, 11000);\n this.mirroringShapeCharacters.setValue(11000, 10999);\n this.mirroringShapeCharacters.setValue(11001, 11002);\n this.mirroringShapeCharacters.setValue(11002, 11001);\n this.mirroringShapeCharacters.setValue(12296, 12297);\n this.mirroringShapeCharacters.setValue(12297, 12296);\n this.mirroringShapeCharacters.setValue(12298, 12299);\n this.mirroringShapeCharacters.setValue(12299, 12298);\n this.mirroringShapeCharacters.setValue(12300, 12301);\n this.mirroringShapeCharacters.setValue(12301, 12300);\n this.mirroringShapeCharacters.setValue(12302, 12303);\n this.mirroringShapeCharacters.setValue(12303, 12302);\n this.mirroringShapeCharacters.setValue(12304, 12305);\n this.mirroringShapeCharacters.setValue(12305, 12304);\n this.mirroringShapeCharacters.setValue(12308, 12309);\n this.mirroringShapeCharacters.setValue(12309, 12308);\n this.mirroringShapeCharacters.setValue(12310, 12311);\n this.mirroringShapeCharacters.setValue(12311, 12310);\n this.mirroringShapeCharacters.setValue(12312, 12313);\n this.mirroringShapeCharacters.setValue(12313, 12312);\n this.mirroringShapeCharacters.setValue(12314, 12315);\n this.mirroringShapeCharacters.setValue(12315, 12314);\n this.mirroringShapeCharacters.setValue(65288, 65289);\n this.mirroringShapeCharacters.setValue(65289, 65288);\n this.mirroringShapeCharacters.setValue(65308, 65310);\n this.mirroringShapeCharacters.setValue(65310, 65308);\n this.mirroringShapeCharacters.setValue(65339, 65341);\n this.mirroringShapeCharacters.setValue(65341, 65339);\n this.mirroringShapeCharacters.setValue(65371, 65373);\n this.mirroringShapeCharacters.setValue(65373, 65371);\n this.mirroringShapeCharacters.setValue(65375, 65376);\n this.mirroringShapeCharacters.setValue(65376, 65375);\n this.mirroringShapeCharacters.setValue(65378, 65379);\n this.mirroringShapeCharacters.setValue(65379, 65378);\n };\n return Bidi;\n}());\nexport { Bidi };\nvar RtlCharacters = /** @class */ (function () {\n //#endregion\n //#region constructors\n function RtlCharacters() {\n //#region fields\n /// \n /// Specifies the character types.\n /// \n this.types = [];\n /// \n /// Specifies the text order (RTL or LTR).\n /// \n this.textOrder = -1;\n /// \n /// Specifies the RTL character types.\n /// \n /* tslint:disable-next-line:prefer-array-literal */\n this.rtlCharacterTypes = new Array(65536);\n //#endregion\n //#region constants\n /// \n /// Left-to-Right (Non-European or non-Arabic digits).\n /// \n this.L = 0;\n /// \n /// Left-to-Right Embedding\n /// \n this.LRE = 1;\n /// \n /// Left-to-Right Override\n /// \n this.LRO = 2;\n /// \n /// Right-to-Left (Hebrew alphabet, and related punctuation).\n /// \n this.R = 3;\n /// \n /// Right-to-Left Arabic \n /// \n this.AL = 4;\n /// \n /// Right-to-Left Embedding.\n /// \n this.RLE = 5;\n /// \n /// Right-to-Left Override\n /// \n this.RLO = 6;\n /// \n /// Pop Directional Format\n /// \n this.PDF = 7;\n /// \n /// European Number (European digits, Eastern Arabic-Indic digits).\n /// \n this.EN = 8;\n /// \n /// European Number Separator (Plus sign, Minus sign).\n /// \n this.ES = 9;\n /// \n /// European Number Terminator (Degree sign, currency symbols).\n /// \n this.ET = 10;\n /// \n /// Arabic Number (Arabic-Indic digits, Arabic decimal and thousands separators).\n /// \n this.AN = 11;\n /// \n /// Common Number Separator (Colon, Comma, Full Stop, No-Break Space.\n /// \n this.CS = 12;\n /// \n /// Nonspacing Mark (Characters with the General_Category values).\n /// \n this.NSM = 13;\n /// \n /// Boundary Neutral (Default ignorables, non-characters, and control characters, other than those explicitly given other types.)\n /// \n this.BN = 14;\n /// \n /// Paragraph Separator (Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination).\n /// \n this.B = 15;\n /// \n /// \tSegment Separator (tab).\n /// \n this.S = 16;\n /// \n /// Whitespace (Space, Figure space, Line separator, Form feed, General Punctuation spaces).\n /// \n this.WS = 17;\n /// \n /// Other Neutrals (All other characters, including object replacement character).\n /// \n this.ON = 18;\n /// \n /// RTL character types.\n /// \n this.charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.NSM, this.NSM, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34,\n this.ON, 35, 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS,\n 47, 47, this.CS, 48, 57, this.EN, 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L,\n 123, 126, this.ON, 127, 132, this.BN, 133, 133, this.B, 134, 159, this.BN, 160, 160, this.CS,\n 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175, this.ON,\n 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON,\n 185, 185, this.EN, 186, 186, this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON,\n 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698, this.ON, 699, 705, this.L,\n 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON,\n 750, 750, this.L, 751, 767, this.ON, 768, 855, this.NSM, 856, 860, this.L, 861, 879, this.NSM,\n 880, 883, this.L, 884, 885, this.ON, 886, 893, this.L, 894, 894, this.ON, 895, 899, this.L,\n 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014, this.ON,\n 1015, 1154, this.L, 1155, 1158, this.NSM, 1159, 1159, this.L, 1160, 1161, this.NSM,\n 1162, 1417, this.L, 1418, 1418, this.ON, 1419, 1424, this.L, 1425, 1441, this.NSM,\n 1442, 1442, this.L, 1443, 1465, this.NSM, 1466, 1466, this.L, 1467, 1469, this.NSM,\n 1470, 1470, this.R, 1471, 1471, this.NSM, 1472, 1472, this.R, 1473, 1474, this.NSM,\n 1475, 1475, this.R, 1476, 1476, this.NSM, 1477, 1487, this.L, 1488, 1514, this.R,\n 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON,\n 1552, 1557, this.NSM, 1558, 1562, this.L, 1563, 1563, this.AL, 1564, 1566, this.L,\n 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L,\n 1600, 1610, this.AL, 1611, 1624, this.NSM, 1625, 1631, this.L, 1632, 1641, this.AN,\n 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647, this.AL, 1648, 1648, this.NSM,\n 1649, 1749, this.AL, 1750, 1756, this.NSM, 1757, 1757, this.AL, 1758, 1764, this.NSM,\n 1765, 1766, this.AL, 1767, 1768, this.NSM, 1769, 1769, this.ON, 1770, 1773, this.NSM,\n 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805, this.AL, 1806, 1806, this.L,\n 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.NSM, 1810, 1839, this.AL,\n 1840, 1866, this.NSM, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L,\n 1920, 1957, this.AL, 1958, 1968, this.NSM, 1969, 1969, this.AL, 1970, 2304, this.L,\n 2305, 2306, this.NSM, 2307, 2363, this.L, 2364, 2364, this.NSM, 2365, 2368, this.L,\n 2369, 2376, this.NSM, 2377, 2380, this.L, 2381, 2381, this.NSM, 2382, 2384, this.L,\n 2385, 2388, this.NSM, 2389, 2401, this.L, 2402, 2403, this.NSM, 2404, 2432, this.L,\n 2433, 2433, this.NSM, 2434, 2491, this.L, 2492, 2492, this.NSM, 2493, 2496, this.L,\n 2497, 2500, this.NSM, 2501, 2508, this.L, 2509, 2509, this.NSM, 2510, 2529, this.L,\n 2530, 2531, this.NSM, 2532, 2545, this.L, 2546, 2547, this.ET, 2548, 2560, this.L,\n 2561, 2562, this.NSM, 2563, 2619, this.L, 2620, 2620, this.NSM, 2621, 2624, this.L,\n 2625, 2626, this.NSM, 2627, 2630, this.L, 2631, 2632, this.NSM, 2633, 2634, this.L,\n 2635, 2637, this.NSM, 2638, 2671, this.L, 2672, 2673, this.NSM, 2674, 2688, this.L,\n 2689, 2690, this.NSM, 2691, 2747, this.L, 2748, 2748, this.NSM, 2749, 2752, this.L,\n 2753, 2757, this.NSM, 2758, 2758, this.L, 2759, 2760, this.NSM, 2761, 2764, this.L,\n 2765, 2765, this.NSM, 2766, 2785, this.L, 2786, 2787, this.NSM, 2788, 2800, this.L,\n 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.NSM, 2818, 2875, this.L,\n 2876, 2876, this.NSM, 2877, 2878, this.L, 2879, 2879, this.NSM, 2880, 2880, this.L,\n 2881, 2883, this.NSM, 2884, 2892, this.L, 2893, 2893, this.NSM, 2894, 2901, this.L,\n 2902, 2902, this.NSM, 2903, 2945, this.L, 2946, 2946, this.NSM, 2947, 3007, this.L,\n 3008, 3008, this.NSM, 3009, 3020, this.L, 3021, 3021, this.NSM, 3022, 3058, this.L,\n 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066, this.ON, 3067, 3133, this.L,\n 3134, 3136, this.NSM, 3137, 3141, this.L, 3142, 3144, this.NSM, 3145, 3145, this.L,\n 3146, 3149, this.NSM, 3150, 3156, this.L, 3157, 3158, this.NSM, 3159, 3259, this.L,\n 3260, 3260, this.NSM, 3261, 3275, this.L, 3276, 3277, this.NSM, 3278, 3392, this.L,\n 3393, 3395, this.NSM, 3396, 3404, this.L, 3405, 3405, this.NSM, 3406, 3529, this.L,\n 3530, 3530, this.NSM, 3531, 3537, this.L, 3538, 3540, this.NSM, 3541, 3541, this.L,\n 3542, 3542, this.NSM, 3543, 3632, this.L, 3633, 3633, this.NSM, 3634, 3635, this.L,\n 3636, 3642, this.NSM, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L,\n 3655, 3662, this.NSM, 3663, 3760, this.L, 3761, 3761, this.NSM, 3762, 3763, this.L,\n 3764, 3769, this.NSM, 3770, 3770, this.L, 3771, 3772, this.NSM, 3773, 3783, this.L,\n 3784, 3789, this.NSM, 3790, 3863, this.L, 3864, 3865, this.NSM, 3866, 3892, this.L,\n 3893, 3893, this.NSM, 3894, 3894, this.L, 3895, 3895, this.NSM, 3896, 3896, this.L,\n 3897, 3897, this.NSM, 3898, 3901, this.ON, 3902, 3952, this.L, 3953, 3966, this.NSM,\n 3967, 3967, this.L, 3968, 3972, this.NSM, 3973, 3973, this.L, 3974, 3975, this.NSM,\n 3976, 3983, this.L, 3984, 3991, this.NSM, 3992, 3992, this.L, 3993, 4028, this.NSM,\n 4029, 4037, this.L, 4038, 4038, this.NSM, 4039, 4140, this.L, 4141, 4144, this.NSM,\n 4145, 4145, this.L, 4146, 4146, this.NSM, 4147, 4149, this.L, 4150, 4151, this.NSM,\n 4152, 4152, this.L, 4153, 4153, this.NSM, 4154, 4183, this.L, 4184, 4185, this.NSM,\n 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786, this.L, 5787, 5788, this.ON,\n 5789, 5905, this.L, 5906, 5908, this.NSM, 5909, 5937, this.L, 5938, 5940, this.NSM,\n 5941, 5969, this.L, 5970, 5971, this.NSM, 5972, 6001, this.L, 6002, 6003, this.NSM,\n 6004, 6070, this.L, 6071, 6077, this.NSM, 6078, 6085, this.L, 6086, 6086, this.NSM,\n 6087, 6088, this.L, 6089, 6099, this.NSM, 6100, 6106, this.L, 6107, 6107, this.ET,\n 6108, 6108, this.L, 6109, 6109, this.NSM, 6110, 6127, this.L, 6128, 6137, this.ON,\n 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157, this.NSM, 6158, 6158, this.WS,\n 6159, 6312, this.L, 6313, 6313, this.NSM, 6314, 6431, this.L, 6432, 6434, this.NSM,\n 6435, 6438, this.L, 6439, 6443, this.NSM, 6444, 6449, this.L, 6450, 6450, this.NSM,\n 6451, 6456, this.L, 6457, 6459, this.NSM, 6460, 6463, this.L, 6464, 6464, this.ON,\n 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON,\n 6656, 8124, this.L, 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON,\n 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157, 8159, this.ON,\n 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON,\n 8191, 8191, this.L, 8192, 8202, this.WS, 8203, 8205, this.BN, 8206, 8206, this.L,\n 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.LRE, 8235, 8235, this.RLE, 8236, 8236, this.PDF, 8237, 8237, this.LRO,\n 8238, 8238, this.RLO, 8239, 8239, this.WS, 8240, 8244, this.ET, 8245, 8276, this.ON,\n 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS,\n 8288, 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN,\n 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315, this.ET, 8316, 8318, this.ON,\n 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON,\n 8335, 8351, this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.NSM,\n 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L, 8451, 8454, this.ON,\n 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON,\n 8469, 8469, this.L, 8470, 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON,\n 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487, this.ON,\n 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET,\n 8495, 8497, this.L, 8498, 8498, this.ON, 8499, 8505, this.L, 8506, 8507, this.ON,\n 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON,\n 8524, 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON,\n 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082, this.L, 9083, 9108, this.ON,\n 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON,\n 9255, 9279, this.L, 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN,\n 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752, 9752, this.L,\n 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L,\n 9888, 9889, this.ON, 9890, 9984, this.L, 9985, 9988, this.ON, 9989, 9989, this.L,\n 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024, this.L,\n 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L,\n 10063, 10066, this.ON, 10067, 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L,\n 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON, 10133, 10135, this.L,\n 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L,\n 10192, 10219, this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L,\n 11904, 11929, this.ON, 11930, 11930, this.L, 11931, 12019, this.ON, 12020, 12031, this.L,\n 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON,\n 12321, 12329, this.L, 12330, 12335, this.NSM, 12336, 12336, this.ON, 12337, 12341, this.L,\n 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352, 12440, this.L,\n 12441, 12442, this.NSM, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON,\n 12449, 12538, this.L, 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON,\n 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923, this.L, 12924, 12925, this.ON,\n 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON,\n 13008, 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON,\n 13280, 13310, this.L, 13311, 13311, this.ON, 13312, 19903, this.L, 19904, 19967, this.ON,\n 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285, this.R,\n 64286, 64286, this.NSM, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R,\n 64311, 64311, this.L, 64312, 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R,\n 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323, 64324, this.R,\n 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L,\n 64467, 64829, this.AL, 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL,\n 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007, this.L, 65008, 65020, this.AL,\n 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.NSM, 65040, 65055, this.L,\n 65056, 65059, this.NSM, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS,\n 65105, 65105, this.ON, 65106, 65106, this.CS, 65107, 65107, this.L, 65108, 65108, this.ON,\n 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121, this.ON,\n 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON,\n 65129, 65130, this.ET, 65131, 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL,\n 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L, 65279, 65279, this.BN,\n 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON,\n 65291, 65291, this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS,\n 65295, 65295, this.ES, 65296, 65305, this.EN, 65306, 65306, this.CS, 65307, 65312, this.ON,\n 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET,\n 65511, 65511, this.L, 65512, 65518, this.ON, 65519, 65528, this.L, 65529, 65531, this.BN,\n 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (var i = 0; i < this.charTypes.length; ++i) {\n var start = this.charTypes[i];\n var end = this.charTypes[++i];\n var b = this.charTypes[++i];\n while (start <= end) {\n this.rtlCharacterTypes[start++] = b;\n }\n }\n }\n //#endregion\n //#region implementation\n RtlCharacters.prototype.getVisualOrder = function (inputText, isRtl) {\n this.types = this.getCharacterCode(inputText);\n this.textOrder = isRtl ? this.LRE : this.L;\n this.doVisualOrder();\n var result = [];\n for (var i = 0; i < this.levels.length; i++) {\n result[i] = this.levels[i];\n }\n return result;\n };\n RtlCharacters.prototype.getCharacterCode = function (text) {\n var characterCodes = [];\n for (var i = 0; i < text.length; i++) {\n characterCodes[i] = this.rtlCharacterTypes[text[i].charCodeAt(0)];\n }\n return characterCodes;\n };\n RtlCharacters.prototype.setDefaultLevels = function () {\n for (var i = 0; i < this.length; i++) {\n this.levels[i] = this.textOrder;\n }\n };\n RtlCharacters.prototype.setLevels = function () {\n this.setDefaultLevels();\n for (var n = 0; n < this.length; ++n) {\n var level = this.levels[n];\n if ((level & 0x80) !== 0) {\n level &= 0x7f;\n this.result[n] = ((level & 0x1) === 0) ? this.L : this.R;\n }\n this.levels[n] = level;\n }\n };\n RtlCharacters.prototype.updateLevels = function (index, level, length) {\n if ((level & 1) === 0) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.R) {\n this.levels[i] += 1;\n }\n else if (this.result[i] !== this.L) {\n this.levels[i] += 2;\n }\n }\n }\n else {\n for (var i = index; i < length; ++i) {\n if (this.result[i] !== this.R) {\n this.levels[i] += 1;\n }\n }\n }\n };\n RtlCharacters.prototype.doVisualOrder = function () {\n this.length = this.types.length;\n this.result = this.types;\n this.levels = [];\n this.setLevels();\n this.length = this.getEmbeddedCharactersLength();\n var preview = this.textOrder;\n var i = 0;\n while (i < this.length) {\n var level = this.levels[i];\n var preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n var length_1 = i + 1;\n while (length_1 < this.length && this.levels[length_1] === level) {\n ++length_1;\n }\n var success = length_1 < this.length ? this.levels[length_1] : this.textOrder;\n var type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this.checkNSM(i, length_1, level, preType, type);\n this.updateLevels(i, level, length_1);\n preview = level;\n i = length_1;\n }\n this.checkEmbeddedCharacters(this.length);\n };\n RtlCharacters.prototype.getEmbeddedCharactersLength = function () {\n var index = 0;\n for (var i = 0; i < this.length; ++i) {\n if (!(this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN)) {\n this.result[index] = this.result[i];\n this.levels[index] = this.levels[i];\n index++;\n }\n }\n return index;\n };\n RtlCharacters.prototype.checkEmbeddedCharacters = function (length) {\n for (var i = this.types.length - 1; i >= 0; --i) {\n if (this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN) {\n this.result[i] = this.types[i];\n this.levels[i] = -1;\n }\n else {\n length -= 1;\n this.result[i] = this.result[length];\n this.levels[i] = this.levels[length];\n }\n }\n for (var i = 0; i < this.types.length; i++) {\n if (this.levels[i] === -1) {\n if (i === 0) {\n this.levels[i] = this.textOrder;\n }\n else {\n this.levels[i] = this.levels[i - 1];\n }\n }\n }\n };\n RtlCharacters.prototype.checkNSM = function (index, length, level, startType, endType) {\n var charType = startType;\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.NSM) {\n this.result[i] = charType;\n }\n else {\n charType = this.result[i];\n }\n }\n this.checkEuropeanDigits(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanDigits = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R || this.result[j] === this.AL) {\n if (this.result[j] === this.AL) {\n this.result[i] = this.AN;\n }\n break;\n }\n }\n }\n }\n this.checkArabicCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkArabicCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.AL) {\n this.result[i] = this.R;\n }\n }\n this.checkEuropeanNumberSeparator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberSeparator = function (index, length, level, startType, endType) {\n for (var i = index + 1; i < length - 1; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.CS) {\n var preview = this.result[i - 1];\n var success = this.result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this.result[i] = this.EN;\n }\n else if (this.result[i] === this.CS && preview === this.AN && success === this.AN) {\n this.result[i] = this.AN;\n }\n }\n }\n this.checkEuropeanNumberTerminator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberTerminator = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ET) {\n var s = i;\n var b = [];\n b.push(this.ET);\n var l = this.getLength(s, length, b);\n var data = s === index ? startType : this.result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this.result[l];\n }\n if (data === this.EN) {\n for (var j = s; j < l; ++j) {\n this.result[j] = this.EN;\n }\n }\n i = l;\n }\n }\n this.checkOtherNeutrals(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherNeutrals = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.ET || this.result[i] === this.CS) {\n this.result[i] = this.ON;\n }\n }\n this.checkOtherCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n var pst = startType;\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R) {\n pst = this.result[j];\n break;\n }\n }\n if (pst === this.L) {\n this.result[i] = this.L;\n }\n }\n }\n this.checkCommanCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.getLength = function (index, length, validSet) {\n --index;\n while (++index < length) {\n var t = this.result[index];\n for (var i = 0; i < validSet.length; ++i) {\n if (t === validSet[i]) {\n index = this.getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n };\n RtlCharacters.prototype.checkCommanCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.WS || this.result[i] === this.ON || this.result[i] === this.B ||\n this.result[i] === this.S) {\n var s = i;\n var byte = [this.B, this.S, this.WS, this.ON];\n var l = this.getLength(s, length, byte);\n var lt = 0;\n var tt = 0;\n var rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this.result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this.result[l];\n if (tt === this.AN) {\n tt = this.R;\n }\n else if (tt === this.EN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (var j = s; j < l; ++j) {\n this.result[j] = rt;\n }\n i = l;\n }\n }\n };\n return RtlCharacters;\n}());\nexport { RtlCharacters };\n","import { PdfString } from './../../primitives/pdf-string';\nimport { ArabicShapeRenderer } from './rtl/rtl-text-shape';\nimport { PdfTextDirection } from './../enum';\nimport { Bidi } from './rtl/rtl-bidirectional';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar RtlRenderer = /** @class */ (function () {\n function RtlRenderer() {\n //region Constants\n /// Open bracket symbol.\n /// \n this.openBracket = '(';\n /// \n /// Close bracket symbol.\n /// \n this.closeBracket = ')';\n //#endregion\n }\n //#region Constructors\n /// \n /// Initializes a new instance of the class.\n /// \n // public constructor() {\n // }\n //#region Public Methods\n /// \n /// Layouts text. Changes blocks position in the RTL text.\n /// Ligates the text if needed.\n /// \n /// Line of the text.\n /// Font to be used for string printing.\n /// Font alignment.\n /// Indicates whether Word Spacing used or not.\n /// Layout string.\n RtlRenderer.prototype.layout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var result = [];\n if (font.Unicode) {\n result = this.customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n return result;\n };\n /// \n /// Layouts a string and splits it by the words and using correct lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n RtlRenderer.prototype.splitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var words = [];\n var system = false;\n if (!system || words == null) {\n words = this.customSplitLayout(line, font, rtl, wordSpace, format);\n }\n return words;\n };\n //#endregion\n //#region Implementation\n // private isEnglish( word : string) : boolean\n // {\n // let c : string = (word.length > 0) ? word[0] : '';\n // return (c >= '0' && c < 'ÿ');\n // }\n // private keepOrder( words : string, startIndex : number, count: number, result : string[], resultIndex : number) : void\n // {\n // for (let i : number = 0, ri = resultIndex - count + 1; i < count; ++i, ++ri) {\n // result[ri] = words[i + startIndex];\n // }\n // }\n /// \n /// Uses system API to layout the text.\n /// \n /// Line of the text to be layouted.\n /// Font which is used for text printing.\n /// Indicates whether we use RTL or RTL lay outing of the text container.\n /// Layout string.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.getGlyphIndex = function (line, font, rtl, /*out*/ glyphs, custom) {\n var success = true;\n var fail = false;\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n glyphs = null;\n if (line.length === 0) {\n return { success: fail, glyphs: glyphs };\n }\n var renderer = new ArabicShapeRenderer();\n var text = renderer.shape(line, 0);\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n glyphs = new Uint16Array(text.length);\n var i = 0;\n for (var k = 0, len = text.length; k < len; k++) {\n var ch = text[k];\n var glyphInfo = ttfReader.getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo).index;\n }\n }\n return { success: success, glyphs: glyphs };\n };\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customLayout = function (line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var result = null;\n //bidirectional order.\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var bidi = new Bidi();\n result = bidi.getLogicalToVisualString(line, rtl);\n }\n return result;\n }\n else {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var layouted = null;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var renderer = new ArabicShapeRenderer();\n var txt = renderer.shape(line, 0);\n layouted = this.customLayout(txt, rtl, format);\n }\n // else {\n // layouted = this.customLayout(line, rtl, format);\n // }\n // We have unicode font, but from the file. \n var result = [];\n // Split the text by words if word spacing is not default.\n if (wordSpace) {\n var words = layouted.split('');\n var count = words.length;\n for (var i = 0; i < count; i++) {\n words[i] = this.addChars(font, words[i]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this.addChars(font, layouted);\n }\n return result;\n }\n };\n /// \n /// Add information about used glyphs to the font.\n /// \n /// Font used for text rendering.\n /// Array of used glyphs.\n /// String in the form to be written to the file.\n RtlRenderer.prototype.addChars = function (font, glyphs) {\n var line = glyphs;\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var text = line;\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n font.setSymbols(text);\n // Reconvert string according to unicode standard.\n text = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(text, false);\n text = PdfString.byteToString(bytes);\n return text;\n // else {\n // if (font == null) {\n // throw new Error('ArgumentNullException : font');\n // }\n // if (glyphs == null) {\n // throw new Error('ArgumentNullException : glyphs');\n // }\n // // Mark the chars as used.\n // let text : string = '';\n // font.setSymbols(glyphs);\n // // Create string from the glyphs.\n // \n // let chars : string[] = [];\n // for (let i : number = 0; i < glyphs.length; i++) {\n // chars[i] = glyphs[i].toString();\n // }\n // for (let j : number = 0 ; j < chars.length; j++) {\n // text = text + chars[j];\n // }\n // let bytes : number[] = PdfString.toUnicodeArray(text, false);\n // text = PdfString.byteToString(bytes);\n // return text;\n // }\n };\n /// \n /// Layouts a string and splits it by the words by using custom lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customSplitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var reversedLine = this.customLayout(line, rtl, format);\n var words = reversedLine.split('');\n return words;\n };\n return RtlRenderer;\n}());\nexport { RtlRenderer };\n","/**\n * `PdfBoolean` class is used to perform boolean related primitive operations.\n * @private\n */\nvar PdfBoolean = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfBoolean` class.\n * @private\n */\n function PdfBoolean(value) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.currentPosition = -1;\n this.value = value;\n }\n Object.defineProperty(PdfBoolean.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.objectStatus;\n },\n set: function (value) {\n this.objectStatus = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.saving;\n },\n set: function (value) {\n this.saving = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index;\n },\n set: function (value) {\n this.index = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfBoolean.prototype.save = function (writer) {\n writer.write(this.boolToStr(this.value));\n };\n /**\n * Creates a `copy of PdfBoolean`.\n * @private\n */\n PdfBoolean.prototype.clone = function (crossTable) {\n var newNumber = new PdfBoolean(this.value);\n return newNumber;\n };\n // Implementation\n /**\n * Converts `boolean to string` - 0/1 'true'/'false'.\n * @private\n */\n PdfBoolean.prototype.boolToStr = function (value) {\n return value ? 'true' : 'false';\n };\n return PdfBoolean;\n}());\nexport { PdfBoolean };\n","/**\n * ImageDecoder class\n */\nimport { ByteArray } from './byte-array';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\n/**\n * Specifies the image `format`.\n * @private\n */\nexport var ImageFormat;\n(function (ImageFormat) {\n /**\n * Specifies the type of `Unknown`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `Bmp`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Bmp\"] = 1] = \"Bmp\";\n /**\n * Specifies the type of `Emf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Emf\"] = 2] = \"Emf\";\n /**\n * Specifies the type of `Gif`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Gif\"] = 3] = \"Gif\";\n /**\n * Specifies the type of `Jpeg`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Jpeg\"] = 4] = \"Jpeg\";\n /**\n * Specifies the type of `Png`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Png\"] = 5] = \"Png\";\n /**\n * Specifies the type of `Wmf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Wmf\"] = 6] = \"Wmf\";\n /**\n * Specifies the type of `Icon`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Icon\"] = 7] = \"Icon\";\n})(ImageFormat || (ImageFormat = {}));\n/**\n * `Decode the image stream`.\n * @private\n */\nvar ImageDecoder = /** @class */ (function () {\n /**\n * Initialize the new instance for `image-decoder` class.\n * @private\n */\n function ImageDecoder(stream) {\n /**\n * Start of file markers.\n * @hidden\n * @private\n */\n this.sof1Marker = 0x00C1;\n this.sof2Marker = 0x00C2;\n this.sof3Marker = 0x00C3;\n this.sof5Marker = 0x00C5;\n this.sof6Marker = 0x00C6;\n this.sof7Marker = 0x00C7;\n this.sof9Marker = 0x00C9;\n this.sof10Marker = 0x00CA;\n this.sof11Marker = 0x00CB;\n this.sof13Marker = 0x00CD;\n this.sof14Marker = 0x00CE;\n this.sof15Marker = 0x00CF;\n /**\n * Specifies `format` of image.\n * @hidden\n * @private\n */\n this.mFormat = ImageFormat.Unknown;\n /**\n * `Bits per component`.\n * @default 8\n * @hidden\n * @private\n */\n this.mbitsPerComponent = 8;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.mStream = stream;\n this.initialize();\n }\n Object.defineProperty(ImageDecoder.prototype, \"height\", {\n /**\n * Gets the `height` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"width\", {\n /**\n * Gets the `width` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"bitsPerComponent\", {\n /**\n * Gets `bits per component`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mbitsPerComponent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"size\", {\n /**\n * Gets the `size` of an image data.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageData\", {\n /**\n * Gets the value of an `image data`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageDataAsNumberArray\", {\n /**\n * Gets the value of an `image data as number array`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.internalBuffer.buffer;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize` image data and image stream.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.initialize = function () {\n if (this.mFormat === ImageFormat.Unknown && this.checkIfJpeg()) {\n this.mFormat = ImageFormat.Jpeg;\n this.parseJpegImage();\n }\n else {\n throw new TypeError('Only the JPEG format is supported');\n }\n this.reset();\n this.mImageData = new ByteArray(this.mStream.count);\n this.mStream.read(this.mImageData, 0, this.mImageData.count);\n };\n /**\n * `Reset` stream position into 0.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.reset = function () {\n this.mStream.position = 0;\n };\n /**\n * `Parse` Jpeg image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.parseJpegImage = function () {\n this.reset();\n var imgData = new ByteArray(this.mStream.count);\n this.mStream.read(imgData, 0, imgData.count);\n var i = 4;\n var isLengthExceed = false;\n /* tslint:disable */\n var length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n while (i < imgData.count) {\n i += length;\n if (i < imgData.count) {\n if (imgData.getBuffer(i + 1) === 192) {\n this.mHeight = imgData.getBuffer(i + 5) * 256 + imgData.getBuffer(i + 6);\n this.mWidth = imgData.getBuffer(i + 7) * 256 + imgData.getBuffer(i + 8);\n return;\n }\n else {\n i += 2;\n length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n }\n }\n else {\n isLengthExceed = true;\n break;\n }\n }\n if (isLengthExceed) {\n this.mStream.position = 0;\n this.skip(this.mStream, 2);\n this.readExceededJPGImage(this.mStream);\n }\n /* tslint:enable */\n };\n Object.defineProperty(ImageDecoder.prototype, \"format\", {\n /**\n * Gets the image `format`.\n * @private\n * @hidden\n */\n get: function () {\n return this.mFormat;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Checks if JPG`.\n * @private\n * @hidden\n */\n ImageDecoder.prototype.checkIfJpeg = function () {\n this.reset();\n for (var i = 0; i < ImageDecoder.mJpegHeader.length; i++) {\n if (ImageDecoder.mJpegHeader[i] !== this.mStream.readByte(i)) {\n return false;\n }\n this.mStream.position++;\n }\n return true;\n };\n /**\n * Return image `dictionary`.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getImageDictionary = function () {\n if (this.mFormat === ImageFormat.Jpeg) {\n var tempArrayBuffer = this.imageData.internalBuffer.length;\n this.imageStream = new PdfStream();\n this.imageStream.isImage = true;\n var tempString = '';\n var decodedString = '';\n for (var i = 0; i < this.imageDataAsNumberArray.byteLength; i++) {\n tempString += String.fromCharCode(null, this.mStream.readByte(i));\n }\n for (var i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[i];\n }\n }\n this.imageStream.data = [decodedString];\n this.imageStream.compress = false;\n this.imageStream.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.xObject));\n this.imageStream.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.image));\n this.imageStream.items.setValue(this.dictionaryProperties.width, new PdfNumber(this.width));\n this.imageStream.items.setValue(this.dictionaryProperties.height, new PdfNumber(this.height));\n this.imageStream.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n this.imageStream.items.setValue(this.dictionaryProperties.filter, new PdfName(this.dictionaryProperties.dctdecode));\n this.imageStream.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(this.getColorSpace()));\n this.imageStream.items.setValue(this.dictionaryProperties.decodeParms, this.getDecodeParams());\n return this.imageStream;\n }\n else {\n return this.imageStream;\n }\n };\n /**\n * Return `colorSpace` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getColorSpace = function () {\n return this.dictionaryProperties.deviceRgb;\n };\n /**\n * Return `decode parameters` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getDecodeParams = function () {\n var decodeParams = new PdfDictionary();\n decodeParams.items.setValue(this.dictionaryProperties.columns, new PdfNumber(this.width));\n decodeParams.items.setValue(this.dictionaryProperties.blackIs1, new PdfBoolean(true));\n decodeParams.items.setValue(this.dictionaryProperties.k, new PdfNumber(-1));\n decodeParams.items.setValue(this.dictionaryProperties.predictor, new PdfNumber(15));\n decodeParams.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n return decodeParams;\n };\n /**\n * 'readExceededJPGImage' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.readExceededJPGImage = function (stream) {\n this.mStream = stream;\n var isContinueReading = true;\n while (isContinueReading) {\n var marker = this.getMarker(stream);\n switch (marker) {\n case this.sof1Marker:\n case this.sof2Marker:\n case this.sof3Marker:\n case this.sof5Marker:\n case this.sof6Marker:\n case this.sof7Marker:\n case this.sof9Marker:\n case this.sof10Marker:\n case this.sof11Marker:\n case this.sof13Marker:\n case this.sof14Marker:\n case this.sof15Marker:\n stream.position += 3;\n this.mHeight = this.mStream.readNextTwoBytes(stream);\n this.mWidth = this.mStream.readNextTwoBytes(stream);\n isContinueReading = false;\n break;\n default:\n this.skipStream(stream);\n break;\n }\n }\n };\n /**\n * 'skip' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skip = function (stream, noOfBytes) {\n this.mStream = stream;\n var temp = new ByteArray(noOfBytes);\n this.mStream.read(temp, 0, temp.count);\n };\n /**\n * 'getMarker' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getMarker = function (stream) {\n var skippedByte = 0;\n var marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\n skippedByte++;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n }\n do {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n } while (marker === 255);\n return marker;\n };\n /**\n * 'skipStream' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skipStream = function (stream) {\n var markerLength = this.mStream.readNextTwoBytes(stream) - 2;\n if (markerLength > 0) {\n stream.position += markerLength;\n }\n };\n /**\n * Number array for `png header`.\n * @hidden\n * @private\n */\n ImageDecoder.mPngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n /**\n * Number Array for `jpeg header`.\n * @hidden\n * @private\n */\n ImageDecoder.mJpegHeader = [255, 216];\n /**\n * Number array for `gif header`.\n * @hidden\n * @private\n */\n ImageDecoder.GIF_HEADER = 'G,I,F,8';\n /**\n * Number array for `bmp header.`\n * @hidden\n * @private\n */\n ImageDecoder.BMP_HEADER = 'B,M';\n return ImageDecoder;\n}());\nexport { ImageDecoder };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColorSpace } from './../enum';\nimport { PdfColor } from './../pdf-color';\nimport { PdfBrush } from './pdf-brush';\nimport { PdfDictionary } from '../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from '../../primitives/pdf-name';\nimport { PdfNumber } from '../../primitives/pdf-number';\nimport { PdfReferenceHolder } from '../../primitives/pdf-reference';\n/**\n * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfGradientBrush = /** @class */ (function (_super) {\n __extends(PdfGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfGradientBrush(shading) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the background color.\n * @private\n */\n _this.mbackground = new PdfColor(255, 255, 255);\n /**\n * Local variable to store the stroking color.\n * @private\n */\n _this.mbStroking = false;\n /**\n * Local variable to store the function.\n * @private\n */\n _this.mfunction = null;\n /**\n * Local variable to store the DictionaryProperties.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.mpatternDictionary = new PdfDictionary();\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.type, new PdfName(_this.dictionaryProperties.pattern));\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.patternType, new PdfNumber(2));\n _this.shading = shading;\n _this.colorSpace = PdfColorSpace.Rgb;\n return _this;\n }\n Object.defineProperty(PdfGradientBrush.prototype, \"background\", {\n //Properties\n /**\n * Gets or sets the background color of the brush.\n * @public\n */\n get: function () {\n return this.mbackground;\n },\n set: function (value) {\n this.mbackground = value;\n var sh = this.shading;\n if (value.isEmpty) {\n sh.remove(this.dictionaryProperties.background);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"antiAlias\", {\n /**\n * Gets or sets a value indicating whether use anti aliasing algorithm.\n * @public\n */\n get: function () {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n return aa.value;\n },\n set: function (value) {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa == null && typeof aa === 'undefined')) {\n aa = new PdfBoolean(value);\n sh.items.setValue(this.dictionaryProperties.antiAlias, aa);\n }\n else {\n aa.value = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"function\", {\n /**\n * Gets or sets the function of the brush.\n * @protected\n */\n get: function () {\n return this.mfunction;\n },\n set: function (value) {\n this.mfunction = value;\n if (value != null && typeof value !== 'undefined') {\n this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));\n }\n else {\n this.shading.remove(this.dictionaryProperties.function);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"bBox\", {\n /**\n * Gets or sets the boundary box of the brush.\n * @protected\n */\n get: function () {\n var sh = this.shading;\n var box = (sh.items.getValue(this.dictionaryProperties.bBox));\n return box;\n },\n set: function (value) {\n var sh = this.shading;\n if (value == null && typeof value === 'undefined') {\n sh.remove(this.dictionaryProperties.bBox);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.bBox, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"colorSpace\", {\n /**\n * Gets or sets the color space of the brush.\n * @public\n */\n get: function () {\n return this.mcolorSpace;\n },\n set: function (value) {\n var colorSpace = this.shading.items.getValue(this.dictionaryProperties.colorSpace);\n if ((value !== this.mcolorSpace) || (colorSpace == null)) {\n this.mcolorSpace = value;\n var csValue = this.colorSpaceToDeviceName(value);\n this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfGradientBrush is stroking.\n * @public\n */\n get: function () {\n return this.mbStroking;\n },\n set: function (value) {\n this.mbStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"patternDictionary\", {\n /**\n * Gets the pattern dictionary.\n * @protected\n */\n get: function () {\n if (this.mpatternDictionary == null) {\n this.mpatternDictionary = new PdfDictionary();\n }\n return this.mpatternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"shading\", {\n /**\n * Gets or sets the shading dictionary.\n * @protected\n */\n get: function () {\n return this.mshading;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Shading');\n }\n if (value !== this.mshading) {\n this.mshading = value;\n this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"matrix\", {\n /**\n * Gets or sets the transformation matrix.\n * @public\n */\n get: function () {\n return this.mmatrix;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Matrix');\n }\n if (value !== this.mmatrix) {\n this.mmatrix = value.clone();\n var m = new PdfArray(this.mmatrix.matrix.elements);\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);\n }\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush.\n * @param streamWriter The stream writer.\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGradientBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush instanceof PdfGradientBrush) {\n if ((this.colorSpace !== currentColorSpace)) {\n this.colorSpace = currentColorSpace;\n this.resetFunction();\n }\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mbStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mbStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfGradientBrush.prototype.resetChanges = function (streamWriter) {\n // Unable reset.\n };\n //Implementation\n /**\n * Converts colorspace enum to a PDF name.\n * @param colorSpace The color space enum value.\n */\n PdfGradientBrush.prototype.colorSpaceToDeviceName = function (colorSpace) {\n var result;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n result = 'DeviceRGB';\n break;\n }\n return result;\n };\n /**\n * Resets the pattern dictionary.\n * @param dictionary A new pattern dictionary.\n */\n PdfGradientBrush.prototype.resetPatternDictionary = function (dictionary) {\n this.mpatternDictionary = dictionary;\n };\n /**\n * Clones the anti aliasing value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneAntiAliasingValue = function (brush) {\n if ((brush == null)) {\n throw new Error('ArgumentNullException : brush');\n }\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa != null)) {\n brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));\n }\n };\n /**\n * Clones the background value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneBackgroundValue = function (brush) {\n var background = this.background;\n if (!background.isEmpty) {\n brush.background = background;\n }\n };\n Object.defineProperty(PdfGradientBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.patternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGradientBrush;\n}(PdfBrush));\nexport { PdfGradientBrush };\n","/**\n * PdfTemplate.ts class for EJ2-PDF\n */\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PointF, SizeF, RectangleF } from './../../drawing/pdf-drawing';\nimport { GetResourceEventHandler } from './../pdf-graphics';\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nvar PdfTemplate = /** @class */ (function () {\n function PdfTemplate(arg1, arg2) {\n /**\n * Initialize an instance for `DictionaryProperties` class.\n * @private\n * @hidden\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the transformation 'is performed'.\n * @default true\n * @private\n */\n this.writeTransformation = true;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.content = new PdfStream();\n var tempSize = new SizeF(arg1.width, arg1.height);\n this.setSize(tempSize);\n this.initialize();\n }\n else {\n this.content = new PdfStream();\n this.setSize(new SizeF(arg1, arg2));\n this.initialize();\n }\n }\n Object.defineProperty(PdfTemplate.prototype, \"size\", {\n //Properties\n /**\n * Gets the size of the 'PdfTemplate'.\n */\n get: function () {\n return this.templateSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"width\", {\n /**\n * Gets the width of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"height\", {\n /**\n * Gets the height of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"graphics\", {\n /**\n * Gets the `graphics` of the 'PdfTemplate'.\n */\n get: function () {\n if (this.pdfGraphics == null || typeof this.pdfGraphics === 'undefined') {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.content);\n this.pdfGraphics = g;\n // if(this.writeTransformation) {\n // Transform co-ordinates to Top/Left.\n this.pdfGraphics.initializeCoordinates();\n // }\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @private\n */\n PdfTemplate.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.content.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n // Public methods\n /**\n * `Initialize` the type and subtype of the template.\n * @private\n */\n PdfTemplate.prototype.initialize = function () {\n this.addType();\n this.addSubType();\n };\n /**\n * `Adds type key`.\n * @private\n */\n PdfTemplate.prototype.addType = function () {\n var value = new PdfName(this.dictionaryProperties.xObject);\n this.content.items.setValue(this.dictionaryProperties.type, value);\n };\n /**\n * `Adds SubType key`.\n * @private\n */\n PdfTemplate.prototype.addSubType = function () {\n var value = new PdfName(this.dictionaryProperties.form);\n this.content.items.setValue(this.dictionaryProperties.subtype, value);\n };\n PdfTemplate.prototype.reset = function (size) {\n if (typeof size === 'undefined') {\n if (this.resources != null) {\n this.resources = null;\n this.content.remove(this.dictionaryProperties.resources);\n }\n if (this.graphics != null) {\n this.graphics.reset(this.size);\n }\n }\n else {\n this.setSize(size);\n this.reset();\n }\n };\n /**\n * `Set the size` of the 'PdfTemplate'.\n * @private\n */\n PdfTemplate.prototype.setSize = function (size) {\n var rect = new RectangleF(new PointF(0, 0), size);\n var val = PdfArray.fromRectangle(rect);\n this.content.items.setValue(this.dictionaryProperties.bBox, val);\n this.templateSize = size;\n };\n Object.defineProperty(PdfTemplate.prototype, \"element\", {\n // /**\n // * Returns the value of current graphics.\n // * @private\n // */\n // public GetGraphics(g : PdfGraphics) : PdfGraphics {\n // if (this.graphics == null || typeof this.graphics === 'undefined') {\n // this.graphics = g;\n // this.graphics.Size = this.Size;\n // this.graphics.StreamWriter = new PdfStreamWriter(this.content)\n // this.graphics.Initialize();\n // if(this.writeTransformation) {\n // this.graphics.InitializeCoordinates();\n // }\n // }\n // return this.graphics;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `content stream` of 'PdfTemplate' class.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplate;\n}());\nexport { PdfTemplate };\n","/**\n * public Enum for `PdfBorderOverlapStyle`.\n * @private\n */\nexport var PdfBorderOverlapStyle;\n(function (PdfBorderOverlapStyle) {\n /**\n * Specifies the type of `Overlap`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Overlap\"] = 0] = \"Overlap\";\n /**\n * Specifies the type of `Inside`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Inside\"] = 1] = \"Inside\";\n})(PdfBorderOverlapStyle || (PdfBorderOverlapStyle = {}));\n","/**\n * Used to perform `convertion between pixels and points`.\n * @private\n */\nvar PdfUnitConverter = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `UnitConvertor` class with DPI value.\n * @private\n */\n function PdfUnitConverter(dpi) {\n this.updateProportionsHelper(dpi);\n }\n /**\n * `Converts` the value, from one graphics unit to another graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertUnits = function (value, from, to) {\n return this.convertFromPixels(this.convertToPixels(value, from), to);\n };\n /**\n * Converts the value `to pixel` from specified graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertToPixels = function (value, from) {\n var index = from;\n var result = (value * this.proportions[index]);\n return result;\n };\n /**\n * Converts value, to specified graphics unit `from Pixel`.\n * @private\n */\n PdfUnitConverter.prototype.convertFromPixels = function (value, to) {\n var index = to;\n var result = (value / this.proportions[index]);\n return result;\n };\n /**\n * `Update proportions` matrix according to Graphics settings.\n * @private\n */\n PdfUnitConverter.prototype.updateProportionsHelper = function (pixelPerInch) {\n this.proportions = [\n pixelPerInch / 2.54,\n pixelPerInch / 6.0,\n 1,\n pixelPerInch / 72.0,\n pixelPerInch,\n pixelPerInch / 300.0,\n pixelPerInch / 25.4 // Millimeter\n ];\n };\n //Fields\n /**\n * Indicates default `horizontal resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.horizontalResolution = 96;\n /**\n * Indicates default `vertical resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.verticalResolution = 96;\n return PdfUnitConverter;\n}());\nexport { PdfUnitConverter };\n","import { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfGraphicsUnit } from './../enum';\nimport { PdfUnitConverter } from './../unit-convertor';\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nvar PdfImage = /** @class */ (function () {\n function PdfImage() {\n }\n Object.defineProperty(PdfImage.prototype, \"width\", {\n /**\n * Gets and Sets the `width` of an image.\n * @private\n */\n get: function () {\n return this.imageWidth;\n },\n set: function (value) {\n this.imageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"height\", {\n /**\n * Gets and Sets the `height` of an image.\n * @private\n */\n get: function () {\n return this.imageHeight;\n },\n set: function (value) {\n this.imageHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"size\", {\n /**\n * Gets or sets the size of the image.\n * @private\n */\n set: function (value) {\n this.width = value.width;\n this.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"physicalDimension\", {\n /**\n * Gets the `physical dimension` of an image.\n * @private\n */\n get: function () {\n this.imagePhysicalDimension = this.getPointSize(this.width, this.height, this.horizontalResolution, this.verticalResolution);\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"element\", {\n // /**\n // * Gets the `image stream as string`.\n // * @private\n // */\n // public static fromString(string : string) : PdfImage {\n // let image : PdfImage = new PdfBitmap(string);\n // return image;\n // }\n /**\n * Gets the `element` image stream.\n * @private\n */\n get: function () {\n return this.imageStream;\n },\n enumerable: true,\n configurable: true\n });\n PdfImage.prototype.getPointSize = function (width, height, horizontalResolution, verticalResolution) {\n if (typeof horizontalResolution === 'undefined') {\n var dpiX = PdfUnitConverter.horizontalResolution;\n var dpiY = PdfUnitConverter.verticalResolution;\n var size = this.getPointSize(width, height, dpiX, dpiY);\n return size;\n }\n else {\n var ucX = new PdfUnitConverter(horizontalResolution);\n var ucY = new PdfUnitConverter(verticalResolution);\n var ptWidth = ucX.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var ptHeight = ucY.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var size = new SizeF(ptWidth, ptHeight);\n return size;\n }\n };\n return PdfImage;\n}());\nexport { PdfImage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfBitmap.ts class for EJ2-PDF\n */\nimport { ImageDecoder } from './../../graphics/images/image-decoder';\nimport { ByteArray } from './../../graphics/images/byte-array';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfImage } from './pdf-image';\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBitmap = /** @class */ (function (_super) {\n __extends(PdfBitmap, _super);\n /**\n * Create an instance for `PdfBitmap` class.\n * @param encodedString Base64 string of an image.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * //\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * //\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n function PdfBitmap(encodedString) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * Specifies the `status` of an image.\n * @default true.\n * @hidden\n * @private\n */\n _this.imageStatus = true;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.loadImage(encodedString);\n return _this;\n }\n /**\n * `Load image`.\n * @hidden\n * @private\n */\n PdfBitmap.prototype.loadImage = function (encodedString) {\n var task = this.initializeAsync(encodedString);\n };\n /**\n * `Initialize` image parameters.\n * @private\n */\n PdfBitmap.prototype.initializeAsync = function (encodedString) {\n var byteArray = new ByteArray(encodedString.length);\n byteArray.writeFromBase64String(encodedString);\n this.decoder = new ImageDecoder(byteArray);\n this.height = this.decoder.height;\n this.width = this.decoder.width;\n // FrameCount = BitmapImageDecoder.FrameCount;\n this.bitsPerComponent = this.decoder.bitsPerComponent;\n };\n /**\n * `Saves` the image into stream.\n * @private\n */\n PdfBitmap.prototype.save = function () {\n this.imageStatus = true;\n this.imageStream = this.decoder.getImageDictionary();\n };\n return PdfBitmap;\n}(PdfImage));\nexport { PdfBitmap };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfResources.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTemplate } from './figures/pdf-template';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfBitmap } from './../graphics/images/pdf-bitmap';\nimport { PdfImage } from './../graphics/images/pdf-image';\nimport { PdfGradientBrush } from './brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfResources` class used to set resource contents like font, image.\n * @private\n */\nvar PdfResources = /** @class */ (function (_super) {\n __extends(PdfResources, _super);\n function PdfResources(baseDictionary) {\n var _this = _super.call(this, baseDictionary) || this;\n /**\n * Dictionary for the `properties names`.\n * @private\n */\n _this.properties = new PdfDictionary();\n return _this;\n }\n Object.defineProperty(PdfResources.prototype, \"names\", {\n //Properties\n /**\n * Gets the `font names`.\n * @private\n */\n get: function () {\n return this.getNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfResources.prototype, \"document\", {\n /**\n * Get or set the `page document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public Methods\n /**\n * `Generates name` for the object and adds to the resource if the object is new.\n * @private\n */\n PdfResources.prototype.getName = function (obj) {\n var primitive = obj.element;\n var name = null;\n if (this.names.containsKey(primitive)) {\n name = this.names.getValue(primitive);\n }\n // Object is new.\n if (name == null) {\n var sName = this.generateName();\n name = new PdfName(sName);\n this.names.setValue(primitive, name);\n if (obj instanceof PdfFont) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTemplate) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfGradientBrush || obj instanceof PdfTilingBrush) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTransparency) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfImage || obj instanceof PdfBitmap) {\n this.add(obj, name);\n }\n }\n return name;\n };\n /**\n * Gets `resource names` to font dictionaries.\n * @private\n */\n PdfResources.prototype.getNames = function () {\n if (this.pdfNames == null) {\n this.pdfNames = new TemporaryDictionary();\n }\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n var dictionary = fonts;\n dictionary = PdfCrossTable.dereference(fonts);\n }\n return this.pdfNames;\n };\n /**\n * Add `RequireProcedureSet` into procset array.\n * @private\n */\n PdfResources.prototype.requireProcedureSet = function (procedureSetName) {\n if (procedureSetName == null) {\n throw new Error('ArgumentNullException:procedureSetName');\n }\n var procSets = this.items.getValue(this.dictionaryProperties.procset);\n if (procSets == null) {\n procSets = new PdfArray();\n this.items.setValue(this.dictionaryProperties.procset, procSets);\n }\n var name = new PdfName(procedureSetName);\n if (!procSets.contains(name)) {\n procSets.add(name);\n }\n };\n //Helper Methods\n /**\n * `Remove font` from array.\n * @private\n */\n PdfResources.prototype.removeFont = function (name) {\n var key = null;\n var keys = this.pdfNames.keys();\n for (var index = 0; index < this.pdfNames.size(); index++) {\n if (this.pdfNames.getValue(keys[index]) === new PdfName(name)) {\n key = keys[index];\n break;\n }\n }\n if (key != null) {\n this.pdfNames.remove(key);\n }\n };\n /**\n * Generates `Unique string name`.\n * @private\n */\n PdfResources.prototype.generateName = function () {\n var name = Guid.getNewGuidString();\n return name;\n };\n PdfResources.prototype.add = function (arg1, arg2) {\n if (arg1 instanceof PdfFont) {\n var dictionary = null;\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n dictionary = fonts;\n dictionary = fonts;\n }\n else {\n dictionary = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.font, dictionary);\n }\n dictionary.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfTemplate) {\n var xobjects = void 0;\n xobjects = this.items.getValue(this.dictionaryProperties.xObject);\n // Create fonts dictionary.\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n xobjects.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfBrush) {\n if (arg1 instanceof PdfGradientBrush || arg1 instanceof PdfTilingBrush) {\n var savable = arg1.element;\n if (savable != null) {\n var pattern = this.items.getValue(this.dictionaryProperties.pattern);\n // Create a new pattern dictionary.\n if (pattern == null) {\n pattern = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.pattern, pattern);\n }\n pattern.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n }\n }\n else if (arg1 instanceof PdfTransparency) {\n var savable = arg1.element;\n var transDic = null;\n transDic = this.items.getValue(this.dictionaryProperties.extGState);\n // Create a new pattern dictionary.\n if (transDic == null) {\n transDic = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.extGState, transDic);\n }\n transDic.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n else {\n /* tslint:disable */\n var xobjects = this.Dictionary.items.getValue(this.dictionaryProperties.xObject);\n var parentXObjects = void 0;\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects = this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.getValue(this.dictionaryProperties.xObject);\n }\n var values = this.Dictionary.items.values();\n var hasSameImageStream = false;\n var oldReference = void 0;\n if (typeof this.pdfDocument !== 'undefined' && (typeof parentXObjects === undefined || parentXObjects == null)) {\n parentXObjects = new PdfDictionary();\n this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.setValue(this.dictionaryProperties.xObject, parentXObjects);\n }\n else if (typeof this.pdfDocument !== 'undefined') {\n var values_1 = parentXObjects.items.values();\n for (var i = 0; i < values_1.length; i++) {\n if (typeof values_1[i] !== 'undefined' && typeof values_1[i].element !== 'undefined') {\n if (values_1[i].element.data[0] === arg1.element.data[0]) {\n oldReference = values_1[i];\n hasSameImageStream = true;\n }\n }\n }\n }\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.Dictionary.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n if (hasSameImageStream && typeof oldReference !== 'undefined') {\n xobjects.items.setValue(arg2.value, oldReference);\n }\n else {\n var reference = new PdfReferenceHolder(arg1.element);\n xobjects.items.setValue(arg2.value, reference);\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects.items.setValue(arg2.value, reference);\n }\n }\n /* tslint:enable */\n }\n };\n return PdfResources;\n}(PdfDictionary));\nexport { PdfResources };\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nvar Guid = /** @class */ (function () {\n function Guid() {\n }\n /**\n * Generate `new GUID`.\n * @private\n */\n Guid.getNewGuidString = function () {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, function (c) {\n var random = Math.random() * 16 | 0;\n var result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n };\n return Guid;\n}());\nexport { Guid };\n/* tslint:enable */ \n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { GetResourceEventHandler } from './../pdf-graphics';\nimport { PdfBrush } from './pdf-brush';\nimport { PointF, SizeF, RectangleF, Rectangle } from './../../drawing/pdf-drawing';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfPage } from './../../pages/pdf-page';\n/**\n * `PdfTilingBrush` Implements a colored tiling brush.\n */\nvar PdfTilingBrush = /** @class */ (function (_super) {\n __extends(PdfTilingBrush, _super);\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @public\n */\n function PdfTilingBrush(arg1, arg2) {\n var _this = _super.call(this) || this;\n /**\n * Local variable to store Stroking.\n * @private\n */\n _this.mStroking = false;\n /**\n * Local variable to store the tile start location.\n * @private\n */\n _this.mLocation = new PointF(0, 0);\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n var rect = null;\n if (arg1 instanceof Rectangle) {\n rect = arg1;\n }\n else if (arg1 instanceof SizeF) {\n rect = new Rectangle(0, 0, arg1.width, arg1.height);\n }\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n }\n _this.brushStream = new PdfStream();\n _this.mResources = new PdfResources();\n _this.brushStream.items.setValue(_this.mDictionaryProperties.resources, _this.mResources);\n _this.setBox(rect);\n _this.setObligatoryFields();\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n _this.graphics.colorSpace = arg2.document.colorSpace;\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @private\n * @param rectangle The size of the smallest brush cell.\n * @param page The Current Page Object.\n * @param location The Tile start location.\n * @param matrix The matrix.\n */\n PdfTilingBrush.prototype.initialize = function (rectangle, page, location, matrix) {\n this.mPage = page;\n this.mLocation = location;\n this.mTransformationMatrix = matrix;\n this.tempBrushStream = this.brushStream;\n this.brushStream = new PdfStream();\n var tempResource = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, tempResource);\n this.setBox(rectangle);\n this.setObligatoryFields();\n return this;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"location\", {\n //Properties\n /**\n * Location representing the start position of the tiles.\n * @public\n */\n get: function () {\n return this.mLocation;\n },\n set: function (value) {\n this.mLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the obligatory fields.\n * @private\n */\n PdfTilingBrush.prototype.setObligatoryFields = function () {\n this.brushStream.items.setValue(this.mDictionaryProperties.patternType, new PdfNumber(1));\n // Tiling brush.\n this.brushStream.items.setValue(this.mDictionaryProperties.paintType, new PdfNumber(1));\n // Coloured.\n this.brushStream.items.setValue(this.mDictionaryProperties.tilingType, new PdfNumber(1));\n // Constant spacing.\n this.brushStream.items.setValue(this.mDictionaryProperties.xStep, new PdfNumber((this.mBox.right - this.mBox.left)));\n this.brushStream.items.setValue(this.mDictionaryProperties.yStep, new PdfNumber((this.mBox.bottom - this.mBox.top)));\n if ((this.mPage != null) && (this.mLocation != null)) {\n if ((this.mTransformationMatrix == null && typeof this.mTransformationMatrix === 'undefined')) {\n // Transform the tile origin to fit the location\n var tileTransform = (this.mPage.size.height % this.rectangle.size.height) - (this.mLocation.y);\n /* tslint:disable-next-line:max-line-length */\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([1, 0, 0, 1, this.mLocation.x, tileTransform]));\n }\n else {\n var tileTransform = 0;\n // Transform the tile origin to fit the location\n var elements = this.mTransformationMatrix.matrix.elements;\n if ((this.mPage.size.height > this.rectangle.size.height)) {\n tileTransform = (this.mTransformationMatrix.matrix.offsetY\n - (this.mPage.size.height % this.rectangle.size.height));\n }\n else {\n tileTransform = ((this.mPage.size.height % this.rectangle.size.height) + this.mTransformationMatrix.matrix.offsetY);\n }\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([\n elements[0], elements[1], elements[2], elements[3], elements[4], tileTransform\n ]));\n }\n }\n };\n /**\n * Sets the BBox coordinates.\n * @private\n */\n PdfTilingBrush.prototype.setBox = function (box) {\n this.mBox = box;\n var rect = new RectangleF(this.mBox.left, this.mBox.top, this.mBox.right, this.mBox.bottom);\n this.brushStream.items.setValue(this.mDictionaryProperties.bBox, PdfArray.fromRectangle(rect));\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"rectangle\", {\n //Properties\n /**\n * Gets the boundary box of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"size\", {\n /**\n * Gets the size of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"graphics\", {\n /**\n * Gets Graphics context of the brush.\n */\n get: function () {\n if ((this.mGraphics == null && typeof this.mGraphics === 'undefined')) {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.brushStream);\n this.mGraphics = g;\n this.mResources = this.getResources();\n this.mGraphics.initializeCoordinates();\n }\n return this.mGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @public\n */\n PdfTilingBrush.prototype.getResources = function () {\n return this.mResources;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfTilingBrush\n * is used for stroking operations.\n */\n get: function () {\n return this.mStroking;\n },\n set: function (value) {\n this.mStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n //PdfBrush methods\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfTilingBrush.prototype.clone = function () {\n var brush = this.initialize(this.rectangle, this.mPage, this.location, this.mTransformationMatrix);\n if ((this.mTransformationMatrix != null) && (this.mTransformationMatrix.matrix != null)) {\n /* tslint:disable-next-line:max-line-length */\n brush.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray(this.mTransformationMatrix.matrix.elements));\n }\n brush.brushStream.data = this.tempBrushStream.data;\n brush.mResources = new PdfResources(this.mResources);\n brush.brushStream.items.setValue(this.mDictionaryProperties.resources, brush.mResources);\n return brush;\n };\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush\n * @param streamWriter The stream writer\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfTilingBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush !== this) {\n // Set the Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources1 = getResources.getResources();\n var name1 = resources1.getName(this);\n streamWriter.setColourWithPattern(null, name1, this.mStroking);\n diff = true;\n }\n else if (brush instanceof PdfTilingBrush) {\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfTilingBrush.prototype.resetChanges = function (streamWriter) {\n // We shouldn't do anything to reset changes.\n // All changes will be reset automatically by setting a new colour space.\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @public\n */\n get: function () {\n return this.brushStream;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTilingBrush;\n}(PdfBrush));\nexport { PdfTilingBrush };\n","/**\n * PdfGraphics.ts class for EJ2-PDF\n */\nimport { PdfColorSpace, TextRenderingMode, PdfFillMode, PdfTextAlignment } from './enum';\nimport { PdfVerticalAlignment, PdfBlendMode } from './enum';\nimport { PdfSubSuperScript } from './fonts/enum';\nimport { PdfStreamWriter } from './../input-output/pdf-stream-writer';\nimport { PdfPen } from './pdf-pen';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTransformationMatrix } from './pdf-transformation-matrix';\nimport { PointF, SizeF, RectangleF } from './../drawing/pdf-drawing';\nimport { ProcedureSets } from './constants';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfStringFormat } from './fonts/pdf-string-format';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfStringLayouter, LineType } from './fonts/string-layouter';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { StringTokenizer } from './fonts/string-tokenizer';\nimport { PdfAutomaticFieldInfoCollection } from './../document/automatic-fields/automatic-field-info-collection';\nimport { PdfAutomaticFieldInfo } from './../document/automatic-fields/automatic-field-info';\nimport { Operators } from './../input-output/pdf-operators';\nimport { UnicodeTrueTypeFont } from './fonts/unicode-true-type-font';\nimport { InternalEnum } from './../primitives/pdf-string';\nimport { RtlRenderer } from './fonts/rtl-renderer';\nimport { PdfTextDirection } from './enum';\nimport { PathPointType } from './figures/enum';\nimport { PdfGradientBrush } from './../../implementation/graphics/brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @class */ (function () {\n function PdfGraphics(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"stringLayoutResult\", {\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get: function () {\n return this.pdfStringLayoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"size\", {\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get: function () {\n return this.canvasSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"mediaBoxUpperRightBound\", {\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get: function () {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n },\n set: function (value) {\n this.internalMediaBoxUpperRightBound = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"clientSize\", {\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get: function () {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"colorSpace\", {\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get: function () {\n return this.currentColorSpace;\n },\n set: function (value) {\n this.currentColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"streamWriter\", {\n /**\n * Gets the `stream writer`.\n * @private\n */\n get: function () {\n return this.pdfStreamWriter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"matrix\", {\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get: function () {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"layer\", {\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"page\", {\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer.page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"automaticFields\", {\n get: function () {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n PdfGraphics.prototype.initialize = function () {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n };\n PdfGraphics.prototype.drawPdfTemplate = function (template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n var scaleX = (template.width > 0) ? size.width / template.width : 1;\n var scaleY = (template.height > 0) ? size.height / template.height : 1;\n var bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n var state = this.save();\n // Take into consideration that rect location is bottom/left.\n var matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n var name_1 = resources.getName(template);\n this.pdfStreamWriter.executeObject(name_1);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n var g = template.graphics;\n if (g != null) {\n for (var index = 0; index < g.automaticFields.automaticFields.length; index++) {\n var fieldInfo = g.automaticFields.automaticFields[index];\n var newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n var scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n var scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n };\n /* tslint:disable */\n /**\n * @public\n */\n PdfGraphics.prototype.drawString = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n var temparg7 = arg7;\n var temparg8 = arg8;\n var temparg9 = arg9;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n var rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n }; /* tslint:enable */\n PdfGraphics.prototype.drawLine = function (arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n var temparg2 = arg2;\n var temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n this.stateControl(arg1, null, null);\n var sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawRectangle = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n var xOffset = (this.matrix.matrix.offsetX + temparg3);\n var yOffset = void 0;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n };\n PdfGraphics.prototype.drawPathHelper = function (arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n var temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var isPen = arg1 != null;\n var isBrush = arg2 != null;\n var isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n arg1.save();\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n var name_2 = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name_2);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n var resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n };\n //Implementation\n /* tslint:disable */\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n PdfGraphics.prototype.getLineBounds = function (lineIndex, result, font, layoutRectangle, format) {\n var bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n var line = result.lines[lineIndex];\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n var lineWidth = line.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x = layoutRectangle.x + hShift;\n /* tslint:disable */\n var width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent; /* tslint:enable */\n var height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n };\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n PdfGraphics.prototype.checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n };\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n PdfGraphics.prototype.setLayer = function (layer) {\n this.pageLayer = layer;\n var page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n };\n /**\n * Adding page number field before page saving.\n * @private\n */\n /* tslint:disable */\n PdfGraphics.prototype.pageSave = function (page) {\n if (page.graphics.automaticFields != null) {\n for (var i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n };\n /**\n * `Draws a layout result`.\n * @private\n */\n PdfGraphics.prototype.drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n var textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n var height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n var subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n var shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n var resultHeight = 0;\n var remainingString = '';\n for (var i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (var j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n var bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n var page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n };\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGraphics.prototype.getNextPage = function () {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n };\n PdfGraphics.prototype.setClip = function (rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n };\n /**\n * Applies all the `text settings`.\n * @private\n */\n PdfGraphics.prototype.applyStringSettings = function (font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n var setLineWidth = false;\n var tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n var cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n var ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n };\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n PdfGraphics.prototype.getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n /* tslint:disable */\n /**\n * `Draws layout result`.\n * @private\n */\n PdfGraphics.prototype.drawLayoutResult = function (result, font, format, layoutRectangle) {\n var vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n var ttfFont = font;\n var unicode = (ttfFont != null && ttfFont.isUnicode);\n var embed = (ttfFont != null && ttfFont.isEmbedFont);\n var lines = result.lines;\n for (var i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n };\n /**\n * `Draws Ascii line`.\n * @private\n */\n PdfGraphics.prototype.drawAsciiLine = function (lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n var value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n var line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n };\n /**\n * Draws unicode line.\n * @private\n */\n PdfGraphics.prototype.drawUnicodeLine = function (lineInfo, layoutRectangle, font, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n var ttfFont = font;\n var wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n var rtlRender = new RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None)) {\n var blocks = null;\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.Right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = null;\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this.breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this.convertToUnicode(line, ttfFont);\n var value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n };\n /**\n * Draws array of unicode tokens.\n */\n /* tslint:disable */\n PdfGraphics.prototype.drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n /* tslint:enable */\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i];\n var word = words[i];\n var tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n var val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n };\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n PdfGraphics.prototype.breakUnicodeLine = function (line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n var tokens = [];\n for (var i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n var word = words[i];\n var token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n };\n /**\n * Creates PdfString from the unicode text.\n */\n PdfGraphics.prototype.getUnicodeString = function (token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n var val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n };\n /**\n * Converts to unicode format.\n */\n PdfGraphics.prototype.convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n var ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n };\n /**\n * `Justifies` the line if needed.\n * @private\n */\n PdfGraphics.prototype.justifyLine = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n var hasWordSpacing = (format != null && format.wordSpacing !== 0);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n var difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n };\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n PdfGraphics.prototype.reset = function (size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n };\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n PdfGraphics.prototype.shouldJustify = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n var goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n /* tslint:disable */\n var shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify)); /* tslint:enable */\n return shouldJustify;\n };\n /* tslint:disable */\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n PdfGraphics.prototype.underlineStrikeoutText = function (pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n var linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n var strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n var lines = result.lines;\n // Run through the text and draw lines.\n for (var i = 0, len = result.lineCount; i < len; i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x1 = layoutRectangle.x + hShift;\n /* tslint:disable */\n var x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n /* tslint:enable */\n if (font.underline) {\n var y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n var y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n };\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n PdfGraphics.prototype.createUnderlineStikeoutPen = function (pen, brush, font, format) {\n // Calculate line width.\n var lineWidth = font.metrics.getSize(format) / 20;\n var linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n };\n /**\n * Return `text rendering mode`.\n * @private\n */\n PdfGraphics.prototype.getTextRenderingMode = function (pen, brush, format) {\n var tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfGraphics.prototype.getLineIndent = function (lineInfo, format, layoutBounds, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n PdfGraphics.prototype.getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n PdfGraphics.prototype.rightToLeft = function (format) {\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n };\n PdfGraphics.prototype.stateControl = function (pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n var saveState = false;\n if (brush !== null) {\n var solidBrush = brush;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n var pdfPen = pen;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n /* tslint:disable */\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n };\n /**\n * Initializes the `current color space`.\n * @private\n */\n PdfGraphics.prototype.initCurrentColorSpace = function (colorspace) {\n var re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n };\n /**\n * Controls the `pen state`.\n * @private\n */\n PdfGraphics.prototype.penControl = function (pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n /* tslint:disable */\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n /* tslint:enable */\n this.currentPen = pen.clone();\n }\n };\n /**\n * Controls the `brush state`.\n * @private\n */\n PdfGraphics.prototype.brushControl = function (brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n var b = brush.clone();\n var lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n var m = lgb.matrix;\n var matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n var br = (brush);\n /* tslint:disable */\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n /* tslint:enable */\n this.currentBrush = brush;\n brush = null;\n }\n };\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n PdfGraphics.prototype.fontControl = function (font, format, saveState) {\n if (font != null) {\n var curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n /* tslint:disable */\n var prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None; /* tslint:enable */\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n var resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n var size = font.metrics.getSize(format);\n /* tslint:disable */\n this.isEmfTextScaled = false;\n var fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n };\n PdfGraphics.prototype.setTransparency = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n var transp = null;\n var td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n var resources = this.getResources.getResources();\n var name_3 = resources.getName(transp);\n var sw = this.streamWriter;\n sw.setGraphicsState(name_3);\n }\n };\n PdfGraphics.prototype.clipTranslateMargins = function (x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n var clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfGraphics.prototype.updateY = function (y) {\n return -y;\n };\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n PdfGraphics.prototype.translateTransform = function (offsetX, offsetY) {\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getTranslateTransform = function (x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n };\n /* tslint:disable */\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n /* tslint:enable */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getScaleTransform = function (x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n };\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Initializes coordinate system`.\n * @private\n */\n PdfGraphics.prototype.initializeCoordinates = function () {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n };\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getRotateTransform = function (angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n };\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n };\n PdfGraphics.prototype.restore = function (state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n var popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n };\n /**\n * `Restores graphics state`.\n * @private\n */\n PdfGraphics.prototype.doRestoreState = function () {\n var state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n };\n /* tslint:enable */\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n PdfGraphics.prototype.drawPath = function (pen, brush, path) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(path.pathPoints, path.pathTypes);\n this.drawPathHelper(pen, brush, path.fillMode, false);\n };\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.drawArc = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n };\n /**\n * Builds up the path.\n * @private\n */\n PdfGraphics.prototype.buildUpPath = function (arg1, arg2) {\n var cnt = arg1.length;\n for (var i = 0; i < cnt; ++i) {\n var typeValue = 0;\n var point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n var p2 = new PointF(0, 0);\n var p3 = new PointF(0, 0);\n var result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n };\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.getBezierPoints = function (points, types, i, p2, p3) {\n var errorMsg = 'Malforming path.';\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n };\n /**\n * Checks path point type flags.\n * @private\n */\n PdfGraphics.prototype.checkFlags = function (type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n };\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n PdfGraphics.prototype.constructArcPath = function (x1, y1, x2, y2, startAng, sweepAngle) {\n var points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n var pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n var i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n };\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n PdfGraphics.prototype.getBezierArc = function (numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n var tmp = void 0;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n var tmp = void 0;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n var fragAngle1;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n var xcen = ((numX1 + numX2) / 2);\n var ycen = ((numY1 + numY2) / 2);\n var rx = ((numX2 - numX1) / 2);\n var ry = ((numY2 - numY1) / 2);\n var halfAng = ((fragAngle1 * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointsList = [];\n for (var i = 0; (i < numFragments); i++) {\n var thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n var thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n var cos0 = (Math.cos(thetaValue0));\n var cos1 = (Math.cos(thetaValue1));\n var sin0 = (Math.sin(thetaValue0));\n var sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n };\n // Constants\n /**\n * Specifies the mask of `path type values`.\n * @private\n */\n PdfGraphics.pathTypesValuesMask = 0xf;\n /**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\n PdfGraphics.transparencyObject = false;\n return PdfGraphics;\n}());\nexport { PdfGraphics };\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @class */ (function () {\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n function GetResourceEventHandler(sender) {\n this.sender = sender;\n }\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n GetResourceEventHandler.prototype.getResources = function () {\n return this.sender.getResources();\n };\n return GetResourceEventHandler;\n}());\nexport { GetResourceEventHandler };\nvar PdfGraphicsState = /** @class */ (function () {\n function PdfGraphicsState(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n this.transformationMatrix = matrix;\n }\n }\n Object.defineProperty(PdfGraphicsState.prototype, \"graphics\", {\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"matrix\", {\n /**\n * Gets the `current matrix`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"characterSpacing\", {\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get: function () {\n return this.internalCharacterSpacing;\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"wordSpacing\", {\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get: function () {\n return this.internalWordSpacing;\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textScaling\", {\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get: function () {\n return this.internalTextScaling;\n },\n set: function (value) {\n this.internalTextScaling = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"pen\", {\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"brush\", {\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"font\", {\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"colorSpace\", {\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textRenderingMode\", {\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get: function () {\n return this.internalTextRenderingMode;\n },\n set: function (value) {\n this.internalTextRenderingMode = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGraphicsState;\n}());\nexport { PdfGraphicsState };\nvar TransparencyData = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n function TransparencyData(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n return TransparencyData;\n}());\n","import { PdfStream } from './../primitives/pdf-stream';\nimport { PdfGraphics, GetResourceEventHandler } from './../graphics/pdf-graphics';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nvar PdfPageLayer = /** @class */ (function () {\n function PdfPageLayer(page, streamClipPageTemplates) {\n // private bSaved : boolean;\n /**\n * Local Variable to store the `color space` of the document.\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n /**\n * Local Variable to set `visibility`.\n * @default true\n * @private\n */\n this.isVisible = true;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Local variable to store `length` of the graphics.\n * @default 0\n * @private\n */\n this.contentLength = 0;\n /**\n * Instance for `PdfDictionaryProperties` Class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n if (page === null) {\n throw new Error('ArgumentNullException:page');\n }\n this.pdfPage = page;\n this.clipPageTemplates = true;\n if (typeof streamClipPageTemplates === 'undefined') {\n this.content = new PdfStream();\n }\n else if (streamClipPageTemplates instanceof PdfStream || streamClipPageTemplates === null) {\n if (streamClipPageTemplates === null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.content = streamClipPageTemplates;\n }\n else {\n this.content = new PdfStream();\n this.clipPageTemplates = streamClipPageTemplates;\n }\n }\n Object.defineProperty(PdfPageLayer.prototype, \"colorSpace\", {\n // Properties\n /**\n * Get or set the `color space`.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"page\", {\n /**\n * Gets parent `page` of the layer.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layerId\", {\n /**\n * Gets and Sets the `id of the layer`.\n * @private\n */\n get: function () {\n return this.layerid;\n },\n set: function (value) {\n this.layerid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"name\", {\n /**\n * Gets or sets the `name` of the layer.\n * @private\n */\n get: function () {\n return this.layerName;\n },\n set: function (value) {\n this.layerName = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"visible\", {\n /**\n * Gets or sets the `visibility` of the layer.\n * @private\n */\n get: function () {\n return this.isVisible;\n },\n set: function (value) {\n this.isVisible = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"graphics\", {\n /**\n * Gets `Graphics` context of the layer, used to draw various graphical content on layer.\n * @private\n */\n get: function () {\n if ((this.pdfGraphics == null)) {\n this.initializeGraphics(this.page);\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layers\", {\n /**\n * Gets the collection of `PdfPageLayer`, this collection handle by the class 'PdfPageLayerCollection'.\n * @private\n */\n get: function () {\n if (this.layer == null) {\n this.layer = new PdfPageLayerCollection(this.page);\n this.layer.sublayer = true;\n return this.layer;\n }\n else {\n return this.layer;\n }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Adds` a new PDF Page layer.\n * @private\n */\n PdfPageLayer.prototype.add = function () {\n var layer = new PdfPageLayer(this.pdfPage);\n layer.name = '';\n return layer;\n };\n /**\n * Returns a value indicating the `sign` of a single-precision floating-point number.\n * @private\n */\n PdfPageLayer.prototype.sign = function (number) {\n if (number === 0) {\n return 0;\n }\n else if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n };\n /**\n * `Initializes Graphics context` of the layer.\n * @private\n */\n PdfPageLayer.prototype.initializeGraphics = function (page) {\n var oPage = page;\n var gr = new GetResourceEventHandler(this.page);\n var cropBox = null;\n this.pdfGraphics = new PdfGraphics(page.size, gr, this.content);\n this.pdfGraphics.mediaBoxUpperRightBound = 0;\n if (oPage != null) {\n var sc = oPage.section.parent;\n if (sc != null) {\n this.pdfGraphics.colorSpace = sc.document.colorSpace;\n this.colorSpace = sc.document.colorSpace;\n }\n }\n // Transform coordinates to the left/top and activate margins.\n var isSame = (this.sign(page.origin.y) === this.sign(page.origin.x));\n // if (page != null) {\n if (page.origin.x >= 0 && page.origin.y >= 0 || !(isSame)) {\n this.pdfGraphics.initializeCoordinates();\n }\n else {\n // this.m_graphics.InitializeCoordinates(page);\n }\n var clipRect = oPage.section.getActualBounds(oPage, true);\n var margins = oPage.section.pageSettings.margins;\n if (this.clipPageTemplates) {\n if (page.origin.x >= 0 && page.origin.y >= 0) {\n this.pdfGraphics.clipTranslateMargins(clipRect);\n }\n }\n else {\n this.graphics.clipTranslateMargins(clipRect.x, clipRect.y, margins.left, margins.top, margins.right, margins.bottom);\n }\n this.pdfGraphics.setLayer(this);\n // this.bSaved = false;\n };\n Object.defineProperty(PdfPageLayer.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPageLayer;\n}());\nexport { PdfPageLayer };\n","/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nvar PdfCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `Collection` class.\n * @private\n */\n function PdfCollection() {\n //\n }\n Object.defineProperty(PdfCollection.prototype, \"count\", {\n // Properties\n /**\n * Gets the `Count` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCollection.prototype, \"list\", {\n /**\n * Gets the `list` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCollection;\n}());\nexport { PdfCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageLayerCollection.ts class for EJ2-PDF\n */\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfPageLayer } from './pdf-page-layer';\nimport { PdfCollection } from './../general/pdf-collection';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfStream } from './../primitives/pdf-stream';\n/**\n * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nvar PdfPageLayerCollection = /** @class */ (function (_super) {\n __extends(PdfPageLayerCollection, _super);\n function PdfPageLayerCollection(page) {\n var _this = _super.call(this) || this;\n /**\n * Stores the `number of first level layers` in the document.\n * @default 0\n * @private\n */\n _this.parentLayerCount = 0;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n _this.sublayer = false;\n /**\n * Stores the `optional content dictionary`.\n * @private\n */\n _this.optionalContent = new PdfDictionary();\n if (page instanceof PdfPageBase) {\n // if (page == null) {\n // throw new Error('ArgumentNullException:page');\n // }\n _this.page = page;\n var lPage = page;\n // if (lPage != null) {\n _this.parseLayers(lPage);\n // }\n }\n return _this;\n }\n PdfPageLayerCollection.prototype.items = function (index, value) {\n if (typeof index === 'number' && typeof value === 'undefined') {\n var obj = this.list[index];\n return obj;\n }\n else {\n if (value == null) {\n throw new Error('ArgumentNullException: layer');\n }\n if (value.page !== this.page) {\n throw new Error('ArgumentException: The layer belongs to another page');\n }\n // // Add/remove the layer.\n // let layer : PdfPageLayer = this.items(index);\n // if (layer != null) {\n // this.RemoveLayer(layer);\n // }\n // this.List[index] = value;\n // this.InsertLayer(index, value);\n }\n };\n PdfPageLayerCollection.prototype.add = function (firstArgument, secondArgument) {\n if (typeof firstArgument === 'undefined') {\n var layer = new PdfPageLayer(this.page);\n layer.name = '';\n this.add(layer);\n return layer;\n }\n else if (firstArgument instanceof PdfPageLayer) {\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var index = this.list.push(firstArgument);\n // Register layer.\n this.addLayer(index, firstArgument);\n return index;\n }\n else {\n return 0;\n }\n };\n /**\n * Registers `layer` at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.addLayer = function (index, layer) {\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.add(reference);\n };\n // private RemoveLayer(layer : PdfPageLayer) : void {\n // if (layer == null) {\n // throw new Error('ArgumentNullException:layer');\n // }\n // let reference : PdfReferenceHolder = new PdfReferenceHolder(layer);\n // if (this.page != null) {\n // this.page.Contents.Remove(reference);\n // }\n // }\n /**\n * Inserts `PdfPageLayer` into the collection at specified index.\n * @private\n */\n PdfPageLayerCollection.prototype.insert = function (index, layer) {\n // if (index < 0)\n // throw new ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\");\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var list = [];\n var length = this.list.length;\n for (var i = index; i < length; i++) {\n list.push(this.list.pop());\n }\n this.list.push(layer);\n for (var i = 0; i < list.length; i++) {\n this.list.push(list[i]);\n }\n // Register layer.\n this.insertLayer(index, layer);\n };\n /**\n * Registers layer at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.insertLayer = function (index, layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException:layer');\n }\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.insert(index, reference);\n };\n // tslint:disable\n /**\n * `Parses the layers`.\n * @private\n */\n PdfPageLayerCollection.prototype.parseLayers = function (loadedPage) {\n // if (loadedPage == null) {\n // throw new Error('ArgumentNullException:loadedPage');\n // }\n var contents = this.page.contents;\n var resource = this.page.getResources();\n var crossTable = null;\n var ocproperties = null;\n var propertie = null;\n var isLayerAdded = false;\n // if (loadedPage instanceof PdfPage) {\n crossTable = loadedPage.crossTable;\n // } else {\n // crossTable = (loadedPage as PdfLoadedPage).CrossTable;\n // Propertie = PdfCrossTable.Dereference(Resource[DictionaryProperties.Properties]) as PdfDictionary;\n // ocproperties = PdfCrossTable.Dereference((loadedPage as PdfLoadedPage).\n // Document.Catalog[DictionaryProperties.OCProperties]) as PdfDictionary;\n // }\n var saveStream = new PdfStream();\n var restoreStream = new PdfStream();\n var saveState = 'q';\n var newLine = '\\n';\n var restoreState = 'Q';\n // for (let index : number = 0; index < contents.Items.length; index++) {\n // let obj : IPdfPrimitive = contents[index];\n // let stream : PdfStream = crossTable.GetObject(obj) as PdfStream;\n // if (stream == null)\n // throw new PdfDocumentException(\"Invalid contents array.\");\n // // if (stream.Compress)\n // {\n // if (!loadedPage.Imported)\n // stream.Decompress();\n // }\n // byte[] contentId = stream.Data;\n // string str = PdfString.ByteToString(contentId);\n // if (!loadedPage.Imported && (contents.Count == 1) && ((stream.Data[stream.Data.Length - 2] ==\n // RestoreState) || (stream.Data[stream.Data.Length - 1] == RestoreState)))\n // {\n // byte[] content = stream.Data;\n // byte[] data = new byte[content.Length + 4];\n // data[0] = SaveState;\n // data[1] = NewLine;\n // content.CopyTo(data, 2);\n // data[data.Length - 2] = NewLine;\n // data[data.Length - 1] = RestoreState;\n // stream.Data = data;\n // }\n // if (ocproperties != null)\n // {\n // if (Propertie != null)\n // {\n // foreach (KeyValuePair prop in Propertie.Items)\n // {\n // String Key = prop.Key.ToString();\n // PdfReferenceHolder refh = prop.Value as PdfReferenceHolder;\n // PdfDictionary Dict = null;\n // if (refh != null)\n // {\n // Dict = refh.Object as PdfDictionary;\n // }\n // else\n // {\n // Dict = prop.Value as PdfDictionary;\n // }\n // PdfDictionary m_usage = PdfCrossTable.Dereference(Dict[DictionaryProperties.Usage]) as PdfDictionary;\n // if (m_usage != null)\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // PdfDictionary printoption = PdfCrossTable.Dereference(m_usage[DictionaryProperties.Print])\n // as PdfDictionary;\n // if (printoption != null)\n // {\n // layer.m_printOption = printoption;\n // foreach (KeyValuePair value in printoption.Items)\n // {\n // if (value.Key.Value.Equals(DictionaryProperties.PrintState))\n // {\n // string printState = (value.Value as PdfName).Value;\n // if (printState.Equals(DictionaryProperties.OCGON))\n // {\n // layer.PrintState = PdfPrintState.AlwaysPrint;\n // break;\n // }\n // else\n // {\n // layer.PrintState = PdfPrintState.NeverPrint;\n // break;\n // }\n // }\n // }\n // }\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // List.add(layer);\n // isLayerAdded = true;\n // if(!str.Contains(\"EMC\"))\n // break;\n // }\n // }\n // else\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // if(Dict.ContainsKey(DictionaryProperties.Name))\n // {\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // }\n // isLayerAdded = true;\n // break;\n // }\n // }\n // }\n // }\n // }\n // if (!isLayerAdded)\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // }\n // else\n // isLayerAdded = false;\n // }\n var saveData = [];\n saveData.push(saveState);\n saveStream.data = saveData;\n contents.insert(0, new PdfReferenceHolder(saveStream));\n saveData = [];\n saveData.push(restoreState);\n restoreStream.data = saveData;\n contents.insert(contents.count, new PdfReferenceHolder(restoreStream));\n };\n /**\n * Returns `index of` the `PdfPageLayer` in the collection if exists, -1 otherwise.\n * @private\n */\n PdfPageLayerCollection.prototype.indexOf = function (layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException: layer');\n }\n var index = this.list.indexOf(layer);\n return index;\n };\n return PdfPageLayerCollection;\n}(PdfCollection));\nexport { PdfPageLayerCollection };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfResources } from './../graphics/pdf-resources';\n/**\n * The abstract base class for all pages,\n * `PdfPageBase` class provides methods and properties to create PDF pages and its elements.\n * @private\n */\nvar PdfPageBase = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `PdfPageBase` class.\n * @private\n */\n function PdfPageBase(dictionary) {\n /**\n * `Index` of the default layer.\n * @default -1.\n * @private\n */\n this.defLayerIndex = -1;\n /**\n * Local variable to store if page `updated`.\n * @default false.\n * @private\n */\n this.modified = false;\n /**\n * Instance of `DictionaryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pageDictionary = dictionary;\n }\n Object.defineProperty(PdfPageBase.prototype, \"section\", {\n //Properties\n /**\n * Gets the `section` of a page.\n * @private\n */\n get: function () {\n // if (this.pdfSection === null) {\n // throw new Error('PdfException : Page must be added to some section before using.');\n // }\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"dictionary\", {\n /**\n * Gets the page `dictionary`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayer\", {\n /**\n * Gets the `default layer` of the page (Read only).\n * @private\n */\n get: function () {\n var layer = this.layers;\n var index = this.defaultLayerIndex;\n var returnlayer = layer.items(index);\n return returnlayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayerIndex\", {\n /**\n * Gets or sets `index of the default layer`.\n * @private\n */\n get: function () {\n if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {\n var layer = this.layerCollection.add();\n this.defLayerIndex = this.layerCollection.indexOf(layer);\n }\n return this.defLayerIndex;\n },\n /**\n * Gets or sets` index of the default layer`.\n * @private\n */\n set: function (value) {\n if (value < 0 || value > this.layers.count - 1) {\n throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');\n }\n else {\n this.defLayerIndex = value;\n this.modified = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"layers\", {\n /**\n * Gets the collection of the page's `layers` (Read only).\n * @private\n */\n get: function () {\n if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {\n this.layerCollection = new PdfPageLayerCollection(this);\n }\n return this.layerCollection;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return an instance of `PdfResources` class.\n * @private\n */\n PdfPageBase.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n Object.defineProperty(PdfPageBase.prototype, \"contents\", {\n /**\n * Gets `array of page's content`.\n * @private\n */\n get: function () {\n var obj = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);\n var contents = obj;\n var rh = obj;\n if (contents == null) {\n contents = new PdfArray();\n this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);\n }\n return contents;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `resources`.\n * @private\n */\n PdfPageBase.prototype.setResources = function (res) {\n this.resources = res;\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n this.modified = true;\n };\n return PdfPageBase;\n}());\nexport { PdfPageBase };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { SizeF, RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nvar PdfAnnotationCollection = /** @class */ (function () {\n function PdfAnnotationCollection(page) {\n // Constants\n /**\n * `Error` constant message.\n * @private\n */\n this.alreadyExistsAnnotationError = 'This annotatation had been already added to page';\n /**\n * `Error` constant message.\n * @private\n */\n this.missingAnnotationException = 'Annotation is not contained in collection.';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Array of the `annotations`.\n * @private\n */\n this.internalAnnotations = new PdfArray();\n /**\n * privte `list` for the annotations.\n * @private\n */\n this.lists = [];\n if (typeof page !== 'undefined') {\n this.page = page;\n }\n }\n Object.defineProperty(PdfAnnotationCollection.prototype, \"annotations\", {\n /**\n * Gets the `PdfAnnotation` object at the specified index. Read-Only.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n set: function (value) {\n this.internalAnnotations = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Adds` a new annotation to the collection.\n * @private\n */\n PdfAnnotationCollection.prototype.add = function (annotation) {\n // this.SetPrint(annotation);\n this.doAdd(annotation);\n };\n /**\n * `Adds` a Annotation to collection.\n * @private\n */\n /* tslint:disable */\n PdfAnnotationCollection.prototype.doAdd = function (annotation) {\n if (typeof annotation.destination !== 'undefined') {\n var layout = new PdfStringLayouter();\n var layoutResult = layout.layout(annotation.text, annotation.font, annotation.stringFormat, new SizeF((annotation.bounds.width), 0), false, new SizeF(0, 0));\n var lastPosition = annotation.bounds.y;\n if (layoutResult.lines.length === 1) {\n var size = annotation.font.measureString(layoutResult.lines[0].text);\n annotation.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annotation.text = layoutResult.lines[0].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, annotation.bounds.y, annotation.bounds.width, annotation.bounds.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n }\n else {\n for (var i = 0; i < layoutResult.lines.length; i++) {\n var size = annotation.font.measureString(layoutResult.lines[i].text);\n if (i === 0) {\n annotation.bounds = new RectangleF(annotation.bounds.x, lastPosition, size.width, size.height);\n annotation.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, lastPosition, size.width, size.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n //Update y for drawing next line of the text.\n lastPosition += annotation.bounds.height;\n }\n else {\n var annot = annotation.clone();\n annot.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annot.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annot.text, annot.font, null, annot.brush, annot.bounds.x, annot.bounds.y, annot.bounds.width, annot.bounds.height, null);\n //Add annotation to dictionary.\n annot.setPage(this.page);\n this.setColor(annot);\n this.internalAnnotations.add(new PdfReferenceHolder(annot));\n this.lists.push(annot);\n //Update y for drawing next line of the text.\n lastPosition += annot.bounds.height;\n }\n }\n }\n }\n else {\n annotation.setPage(this.page);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n return this.lists.push(annotation);\n }\n };\n /* tslint:enable */\n /**\n * `Set a color of an annotation`.\n * @private\n */\n PdfAnnotationCollection.prototype.setColor = function (annotation) {\n var cs = PdfColorSpace.Rgb;\n var colours = annotation.color.toArray(cs);\n annotation.dictionary.items.setValue(this.dictionaryProperties.c, colours);\n };\n Object.defineProperty(PdfAnnotationCollection.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` representing this object.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationCollection;\n}());\nexport { PdfAnnotationCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary, SaveTemplateEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { SizeF } from './../drawing/pdf-drawing';\nimport { PdfAnnotationCollection } from './../annotations/annotation-collection';\nimport { PdfPageLayer } from './pdf-page-layer';\n/**\n * Provides methods and properties to create pages and its elements.\n * `PdfPage` class inherited from the `PdfPageBase` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPage = /** @class */ (function (_super) {\n __extends(PdfPage, _super);\n //constructors\n /**\n * Initialize the new instance for `PdfPage` class.\n * @private\n */\n function PdfPage() {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Stores the instance of `PdfAnnotationCollection` class.\n * @hidden\n * @default null\n * @private\n */\n _this.annotationCollection = null;\n /**\n * Stores the instance of `PageBeginSave` event for Page Number Field.\n * @default null\n * @private\n */\n _this.beginSave = null;\n _this.initialize();\n return _this;\n }\n Object.defineProperty(PdfPage.prototype, \"document\", {\n //Properties\n /**\n * Gets current `document`.\n * @private\n */\n get: function () {\n if (this.section !== null && this.section.parent !== null) {\n return this.section.parent.document;\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"graphics\", {\n /**\n * Get the current `graphics`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // get graphics\n * let graphics : PdfGraphics = page1.graphics;\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var result = this.defaultLayer.graphics;\n result.currentPage = this;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"crossTable\", {\n /**\n * Gets the `cross table`.\n * @private\n */\n get: function () {\n if (this.section === null) {\n throw new Error('PdfDocumentException : Page is not created');\n }\n return this.section.parent === null ? this.section.parentDocument.crossTable : this.section.parent.document.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"size\", {\n /**\n * Gets the size of the PDF page- Read only.\n * @public\n */\n get: function () {\n return this.section.pageSettings.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"origin\", {\n /**\n * Gets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.section.pageSettings.origin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"annotations\", {\n /**\n * Gets a collection of the `annotations` of the page- Read only.\n * @private\n */\n get: function () {\n if (this.annotationCollection == null) {\n this.annotationCollection = new PdfAnnotationCollection(this);\n // if (!this.Dictionary.ContainsKey(this.dictionaryProperties.annots)) {\n this.dictionary.items.setValue(this.dictionaryProperties.annots, this.annotationCollection.element);\n // }\n this.annotationCollection.annotations = this.dictionary.items.getValue(this.dictionaryProperties.annots);\n }\n return this.annotationCollection;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` a page.\n * @private\n */\n PdfPage.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName('Page'));\n this.dictionary.pageBeginDrawTemplate = new SaveTemplateEventHandler(this);\n };\n /**\n * Sets parent `section` to the page.\n * @private\n */\n PdfPage.prototype.setSection = function (section) {\n this.section = section;\n this.dictionary.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(section));\n };\n /**\n * `Resets the progress`.\n * @private\n */\n PdfPage.prototype.resetProgress = function () {\n this.isProgressOn = false;\n };\n /**\n * Get the page size reduced by page margins and page template dimensions.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the specified point using `getClientSize` method\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfPage.prototype.getClientSize = function () {\n var returnValue = this.section.getActualBounds(this, true);\n return new SizeF(returnValue.width, returnValue.height);\n };\n /**\n * Helper method to retrive the instance of `PageBeginSave` event for header and footer elements.\n * @private\n */\n PdfPage.prototype.pageBeginSave = function () {\n var doc = this.document;\n if (typeof doc !== undefined && doc != null) {\n this.drawPageTemplates(doc);\n }\n if (this.beginSave != null && typeof this.beginSave !== 'undefined') {\n this.beginSave(this);\n }\n };\n /**\n * Helper method to draw template elements.\n * @private\n */\n PdfPage.prototype.drawPageTemplates = function (document) {\n // Draw Background templates.\n var hasBackTemplates = this.section.containsTemplates(document, this, false);\n if (hasBackTemplates) {\n var backLayer = new PdfPageLayer(this, false);\n this.layers.insert(0, backLayer);\n this.section.drawTemplates(this, backLayer, document, false);\n if (backLayer.graphics !== null && typeof backLayer.graphics !== 'undefined') {\n for (var i = 0; i < backLayer.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = backLayer.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(backLayer.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n // Draw Foreground templates.\n var hasFrontTemplates = this.section.containsTemplates(document, this, true);\n if (hasFrontTemplates) {\n var frontLayer = new PdfPageLayer(this, false);\n this.layers.add(frontLayer);\n this.section.drawTemplates(this, frontLayer, document, true);\n }\n };\n return PdfPage;\n}(PdfPageBase));\nexport { PdfPage };\n","/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nvar PageAddedEventArgs = /** @class */ (function () {\n function PageAddedEventArgs(page) {\n if (typeof page !== 'undefined') {\n this.pdfPage = page;\n }\n else {\n this.pdfPage = null;\n }\n }\n Object.defineProperty(PageAddedEventArgs.prototype, \"page\", {\n /**\n * Gets the `newly added page`.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return PageAddedEventArgs;\n}());\nexport { PageAddedEventArgs };\n","/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nvar PdfSectionPageCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfSectionPageCollection` class.\n * @private\n */\n function PdfSectionPageCollection(section) {\n // Fields\n /**\n * @hidden\n * @private\n */\n this.pdfSection = null;\n if (section == null) {\n throw Error('ArgumentNullException(\"section\")');\n }\n this.section = section;\n }\n Object.defineProperty(PdfSectionPageCollection.prototype, \"section\", {\n // Properties\n /**\n * Gets the `PdfPage` at the specified index.\n * @private\n */\n get: function () {\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public Methods\n /**\n * `Determines` whether the specified page is within the collection.\n * @private\n */\n PdfSectionPageCollection.prototype.contains = function (page) {\n return this.section.contains(page);\n };\n /**\n * `Removes` the specified page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.remove = function (page) {\n this.section.remove(page);\n };\n /**\n * `Adds` a new page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.add = function () {\n return this.section.add();\n };\n return PdfSectionPageCollection;\n}());\nexport { PdfSectionPageCollection };\n","import { TemplateType } from './../pages/enum';\n// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;\n/**\n * `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.\n * @private\n */\nvar PdfDocumentTemplate = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfDocumentTemplate` class.\n * @public\n */\n function PdfDocumentTemplate() {\n //\n }\n Object.defineProperty(PdfDocumentTemplate.prototype, \"left\", {\n // private m_stamps : PdfStampCollection;\n // Properties\n /**\n * `Left` page template object.\n * @public\n */\n get: function () {\n return this.leftTemplate;\n },\n set: function (value) {\n this.leftTemplate = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"top\", {\n /**\n * `Top` page template object.\n * @public\n */\n get: function () {\n return this.topTemplate;\n },\n set: function (value) {\n this.topTemplate = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"right\", {\n /**\n * `Right` page template object.\n * @public\n */\n get: function () {\n return this.rightTemplate;\n },\n set: function (value) {\n this.rightTemplate = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"bottom\", {\n /**\n * `Bottom` page template object.\n * @public\n */\n get: function () {\n return this.bottomTemplate;\n },\n set: function (value) {\n this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenLeft\", {\n /**\n * `EvenLeft` page template object.\n * @public\n */\n get: function () {\n return this.evenLeft;\n },\n set: function (value) {\n this.evenLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenTop\", {\n /**\n * `EvenTop` page template object.\n * @public\n */\n get: function () {\n return this.evenTop;\n },\n set: function (value) {\n this.evenTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenRight\", {\n /**\n * `EvenRight` page template object.\n * @public\n */\n get: function () {\n return this.evenRight;\n },\n set: function (value) {\n this.evenRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenBottom\", {\n /**\n * `EvenBottom` page template object.\n * @public\n */\n get: function () {\n return this.evenBottom;\n },\n set: function (value) {\n this.evenBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddLeft\", {\n /**\n * `OddLeft` page template object.\n * @public\n */\n get: function () {\n return this.oddLeft;\n },\n set: function (value) {\n this.oddLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddTop\", {\n /**\n * `OddTop` page template object.\n * @public\n */\n get: function () {\n return this.oddTop;\n },\n set: function (value) {\n this.oddTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddRight\", {\n /**\n * `OddRight` page template object.\n * @public\n */\n get: function () {\n return this.oddRight;\n },\n set: function (value) {\n this.oddRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddBottom\", {\n /**\n * `OddBottom` page template object.\n * @public\n */\n get: function () {\n return this.oddBottom;\n },\n set: function (value) {\n this.oddBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Returns `left` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getLeft = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenLeft != null) ? this.EvenLeft : this.left;\n }\n else {\n template = (this.OddLeft != null) ? this.OddLeft : this.left;\n }\n // }\n return template;\n };\n /**\n * Returns `top` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getTop = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenTop != null) ? this.EvenTop : this.top;\n }\n else {\n template = (this.OddTop != null) ? this.OddTop : this.top;\n }\n // }\n return template;\n };\n /**\n * Returns `right` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getRight = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenRight != null) ? this.EvenRight : this.right;\n }\n else {\n template = (this.OddRight != null) ? this.OddRight : this.right;\n }\n // }\n return template;\n };\n /**\n * Returns `bottom` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getBottom = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;\n }\n else {\n template = (this.OddBottom != null) ? this.OddBottom : this.bottom;\n }\n // }\n return template;\n };\n /**\n * Checks whether the page `is even`.\n * @private\n */\n PdfDocumentTemplate.prototype.isEven = function (page) {\n var pages = page.section.document.pages;\n var index = 0;\n if (pages.pageCollectionIndex.containsKey(page)) {\n index = pages.pageCollectionIndex.getValue(page) + 1;\n }\n else {\n index = pages.indexOf(page) + 1;\n }\n var even = ((index % 2) === 0);\n return even;\n };\n /**\n * Checks a `template element`.\n * @private\n */\n PdfDocumentTemplate.prototype.checkElement = function (templateElement, type) {\n if (templateElement != null) {\n if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {\n throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');\n }\n templateElement.type = type;\n }\n return templateElement;\n };\n return PdfDocumentTemplate;\n}());\nexport { PdfDocumentTemplate };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSectionTemplate.ts class for EJ2-PDF\n */\nimport { PdfDocumentTemplate } from './../document/pdf-document-template';\n/**\n * Represents a `page template` for all the pages in the section.\n */\nvar PdfSectionTemplate = /** @class */ (function (_super) {\n __extends(PdfSectionTemplate, _super);\n // Constructors\n /**\n * `Creates a new object`.\n * @private\n */\n function PdfSectionTemplate() {\n var _this = _super.call(this) || this;\n _this.leftValue = _this.topValue = _this.rightValue = _this.bottomValue = _this.stampValue = true;\n return _this;\n }\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentLeftTemplate\", {\n // Properties\n /**\n * Gets or sets value indicating whether parent `Left page template should be used or not`.\n * @private\n */\n get: function () {\n return this.leftValue;\n },\n set: function (value) {\n this.leftValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentTopTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Top page template should be used or not`.\n * @private\n */\n get: function () {\n return this.topValue;\n },\n set: function (value) {\n this.topValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentRightTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Right page template should be used or not`.\n * @private\n */\n get: function () {\n return this.rightValue;\n },\n set: function (value) {\n this.rightValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentBottomTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Bottom page template should be used or not`.\n * @private\n */\n get: function () {\n return this.bottomValue;\n },\n set: function (value) {\n this.bottomValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentStamps\", {\n /**\n * Gets or sets value indicating whether the `stamp value` is true or not.\n * @private\n */\n get: function () {\n return this.stampValue;\n },\n set: function (value) {\n this.stampValue = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfSectionTemplate;\n}(PdfDocumentTemplate));\nexport { PdfSectionTemplate };\n","import { PdfPage } from './pdf-page';\nimport { PageAddedEventArgs } from './page-added-event-arguments';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { SaveSectionEventHandler } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfSectionCollection } from './pdf-section-collection';\nimport { PdfSectionPageCollection } from './pdf-section-page-collection';\nimport { RectangleF } from './../drawing/pdf-drawing';\nimport { PdfSectionTemplate } from './pdf-section-templates';\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nvar PdfSection = /** @class */ (function () {\n function PdfSection(document, pageSettings) {\n //Fields\n //public PageAdded() : PageAddedEventArgs.PageAddedEventHandler = new PageAddedEventArgs.PageAddedEventHandler(Object,args)\n /**\n * @hidden\n * @private\n */\n this.pageAdded = new PageAddedEventArgs();\n /**\n * @hidden\n * @private\n */\n this.pdfPages = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pdfDocument = document;\n if (typeof pageSettings === 'undefined') {\n this.settings = document.pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n else {\n this.settings = pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n this.initialize();\n }\n Object.defineProperty(PdfSection.prototype, \"parent\", {\n //Property\n /**\n * Gets or sets the `parent`.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n set: function (value) {\n this.sectionCollection = value;\n this.section.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"parentDocument\", {\n /**\n * Gets the `parent document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pageSettings\", {\n /**\n * Gets or sets the `page settings` of the section.\n * @private\n */\n get: function () {\n return this.settings;\n },\n set: function (value) {\n if (value != null) {\n this.settings = value;\n }\n else {\n throw Error('Value can not be null.');\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.section;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"count\", {\n /**\n * Gets the `count` of the pages in the section.\n * @private\n */\n get: function () {\n return this.pagesReferences.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"template\", {\n /**\n * Gets or sets a `template` for the pages in the section.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfSectionTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"document\", {\n /**\n * Gets the `document`.\n * @private\n */\n get: function () {\n return this.sectionCollection.document;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pages\", {\n /**\n * Gets the collection of `pages` in a section (Read only)\n * @private\n */\n get: function () {\n if (this.pagesCollection == null || typeof this.pagesCollection === 'undefined') {\n this.pagesCollection = new PdfSectionPageCollection(this);\n }\n return this.pagesCollection;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * `Return the page collection` of current section.\n * @private\n */\n PdfSection.prototype.getPages = function () {\n return this.pdfPages;\n };\n /**\n * `Translates` point into native coordinates of the page.\n * @private\n */\n PdfSection.prototype.pointToNativePdf = function (page, point) {\n var bounds = this.getActualBounds(page, true);\n point.x += bounds.x;\n point.y = this.pageSettings.height - (point.y);\n return point;\n };\n /**\n * Sets the page setting of the current section.\n * @public\n * @param settings Instance of `PdfPageSettings`\n */\n PdfSection.prototype.setPageSettings = function (settings) {\n this.settings = settings;\n this.state.orientation = settings.orientation;\n this.state.rotate = settings.rotate;\n this.state.size = settings.size;\n this.state.origin = settings.origin;\n };\n /**\n * `Initializes` the object.\n * @private\n */\n PdfSection.prototype.initialize = function () {\n this.pagesReferences = new PdfArray();\n this.section = new PdfDictionary();\n this.state = new PageSettingsState(this.pdfDocument);\n this.section.sectionBeginSave = new SaveSectionEventHandler(this, this.state);\n this.pageCount = new PdfNumber(0);\n this.section.items.setValue(this.dictionaryProperties.count, this.pageCount);\n this.section.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pages));\n this.section.items.setValue(this.dictionaryProperties.kids, this.pagesReferences);\n };\n /**\n * Checks whether any template should be printed on this layer.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground Layer z-order.\n * @returns True - if some content should be printed on the layer, False otherwise.\n */\n PdfSection.prototype.containsTemplates = function (document, page, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionTemplates = this.getSectionTemplates(page, foreground);\n return (documentHeaders.length > 0 || sectionTemplates.length > 0);\n };\n /**\n * Returns array of the document templates.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param headers If true - return headers/footers, if false - return simple templates.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the document templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getDocumentTemplates = function (document, page, foreground) {\n var templates = [];\n if (this.template.applyDocumentTopTemplate && document.template.getTop(page) != null) {\n if ((!(document.template.getTop(page).foreground || foreground)) || (document.template.getTop(page).foreground && foreground)) {\n templates.push(document.template.getTop(page));\n }\n }\n if (this.template.applyDocumentBottomTemplate && document.template.getBottom(page) != null) {\n if ((!(document.template.getBottom(page).foreground || foreground)) || (document.template.getBottom(page).foreground && foreground)) {\n templates.push(document.template.getBottom(page));\n }\n }\n if (this.template.applyDocumentLeftTemplate && document.template.getLeft(page) != null) {\n if ((!(document.template.getLeft(page).foreground || foreground)) || (document.template.getLeft(page).foreground && foreground)) {\n templates.push(document.template.getLeft(page));\n }\n }\n if (this.template.applyDocumentRightTemplate && document.template.getRight(page) != null) {\n if ((!(document.template.getRight(page).foreground || foreground)) || (document.template.getRight(page).foreground && foreground)) {\n templates.push(document.template.getRight(page));\n }\n }\n return templates;\n };\n /**\n * Returns array of the section templates.\n * @private\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the section templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getSectionTemplates = function (page, foreground) {\n var templates = [];\n if (this.template.getTop(page) != null) {\n var pageTemplate = this.template.getTop(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getBottom(page) != null) {\n var pageTemplate = this.template.getBottom(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getLeft(page) != null) {\n var pageTemplate = this.template.getLeft(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getRight(page) != null) {\n var pageTemplate = this.template.getRight(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n return templates;\n };\n /* tslint:enable */\n /**\n * `Adds` the specified page.\n * @private\n */\n PdfSection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var r = this.checkPresence(page);\n this.pdfPages.push(page);\n this.pagesReferences.add(r);\n page.setSection(this);\n page.resetProgress();\n this.pageAddedMethod(page);\n }\n };\n /**\n * `Checks the presence`.\n * @private\n */\n PdfSection.prototype.checkPresence = function (page) {\n var rh = new PdfReferenceHolder(page);\n var contains = false;\n var sc = this.parent;\n for (var index = 0; index < sc.section.length; index++) {\n var section = sc.section[index];\n contains = contains || section.contains(page);\n }\n return rh;\n };\n /**\n * `Determines` whether the page in within the section.\n * @private\n */\n PdfSection.prototype.contains = function (page) {\n var index = this.indexOf(page);\n return (0 <= index);\n };\n /**\n * Get the `index of` the page.\n * @private\n */\n PdfSection.prototype.indexOf = function (page) {\n for (var index = 0; index < this.pdfPages.length; index++) {\n if (this.pdfPages[index] === page) {\n return this.pdfPages.indexOf(page);\n }\n }\n var r = new PdfReferenceHolder(page);\n return this.pagesReferences.indexOf(r);\n };\n /**\n * Call two event's methods.\n * @hidden\n * @private\n */\n PdfSection.prototype.pageAddedMethod = function (page) {\n //Create event's arguments\n var args = new PageAddedEventArgs(page);\n this.onPageAdded(args);\n var parent = this.parent;\n parent.document.pages.onPageAdded(args);\n this.pageCount.intValue = this.count;\n };\n /**\n * Called when the page has been added.\n * @hidden\n * @private\n */\n PdfSection.prototype.onPageAdded = function (args) {\n //\n };\n PdfSection.prototype.getActualBounds = function (arg1, arg2, arg3) {\n if (arg1 instanceof PdfPage && typeof arg2 === 'boolean') {\n var result = void 0;\n var document_1 = this.parent.document;\n result = this.getActualBounds(document_1, arg1, arg2);\n return result;\n }\n else {\n arg1 = arg1;\n arg2 = arg2;\n arg3 = arg3;\n var bounds = new RectangleF(0, 0, 0, 0);\n bounds.height = (arg3) ? this.pageSettings.size.height : this.pageSettings.getActualSize().height;\n bounds.width = (arg3) ? this.pageSettings.size.width : this.pageSettings.getActualSize().width;\n var left = this.getLeftIndentWidth(arg1, arg2, arg3);\n var top_1 = this.getTopIndentHeight(arg1, arg2, arg3);\n var right = this.getRightIndentWidth(arg1, arg2, arg3);\n var bottom = this.getBottomIndentHeight(arg1, arg2, arg3);\n bounds.x += left;\n bounds.y += top_1;\n bounds.width -= (left + right);\n bounds.height -= (top_1 + bottom);\n return bounds;\n }\n };\n /**\n * Calculates width of the `left indent`.\n * @private\n */\n PdfSection.prototype.getLeftIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.left : 0;\n var templateWidth = (this.template.getLeft(page) != null) ? this.template.getLeft(page).width : 0;\n var docTemplateWidth = (document.template.getLeft(page) != null) ? document.template.getLeft(page).width : 0;\n value += (this.template.applyDocumentLeftTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the top indent.\n * @private\n */\n PdfSection.prototype.getTopIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.top : 0;\n var templateHeight = (this.template.getTop(page) != null) ? this.template.getTop(page).height : 0;\n var docTemplateHeight = (document.template.getTop(page) != null) ? document.template.getTop(page).height : 0;\n value += (this.template.applyDocumentTopTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * Calculates `width` of the right indent.\n * @private\n */\n PdfSection.prototype.getRightIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.right : 0;\n var templateWidth = (this.template.getRight(page) != null) ? this.template.getRight(page).width : 0;\n var docTemplateWidth = (document.template.getRight(page) != null) ? document.template.getRight(page).width : 0;\n value += (this.template.applyDocumentRightTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the bottom indent.\n * @private\n */\n PdfSection.prototype.getBottomIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.bottom : 0;\n var templateHeight = (this.template.getBottom(page) != null) ? this.template.getBottom(page).height : 0;\n var docTemplateHeight = (document.template.getBottom(page) != null) ? document.template.getBottom(page).height : 0;\n value += (this.template.applyDocumentBottomTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * `Removes` the page from the section.\n * @private\n */\n PdfSection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var index = this.pdfPages.indexOf(page);\n this.pagesReferences.removeAt(index);\n var temproaryPages = [];\n for (var j = 0; j < index; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n for (var j = index + 1; j < this.pdfPages.length; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n this.pdfPages = temproaryPages;\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSection.prototype.applyPageSettings = function (container, parentSettings, state) {\n var bounds = new RectangleF(state.origin, state.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n var rotate = 0;\n rotate = PdfSectionCollection.rotateFactor * state.rotate;\n var angle = new PdfNumber(rotate);\n container.items.setValue(this.dictionaryProperties.rotate, angle);\n };\n /**\n * Catches the Save event of the dictionary.\n * @hidden\n * @private\n */\n PdfSection.prototype.beginSave = function (state, writer) {\n var doc = writer.document;\n this.applyPageSettings(this.section, doc.pageSettings, state);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplates = function (page, layer, document, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionHeaders = this.getSectionTemplates(page, foreground);\n this.drawTemplatesHelper(layer, document, documentHeaders);\n this.drawTemplatesHelper(layer, document, sectionHeaders);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplatesHelper = function (layer, document, templates) {\n if (templates != null && templates.length > 0) {\n var len = templates.length;\n for (var i = 0; i < len; i++) {\n var template = templates[i];\n template.draw(layer, document);\n }\n }\n };\n return PdfSection;\n}());\nexport { PdfSection };\nvar PageSettingsState = /** @class */ (function () {\n //Public Constructor\n /**\n * New instance to store the `PageSettings`.\n * @private\n */\n function PageSettingsState(document) {\n this.pageOrientation = document.pageSettings.orientation;\n this.pageRotate = document.pageSettings.rotate;\n this.pageSize = document.pageSettings.size;\n this.pageOrigin = document.pageSettings.origin;\n }\n Object.defineProperty(PageSettingsState.prototype, \"orientation\", {\n //public Properties\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (value) {\n this.pageOrientation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"rotate\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageRotate;\n },\n set: function (value) {\n this.pageRotate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"size\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.pageSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"origin\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n return PageSettingsState;\n}());\nexport { PageSettingsState };\n","import { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfDictionary, SaveSectionCollectionEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfSection } from './pdf-section';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nvar PdfSectionCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n function PdfSectionCollection(document) {\n /**\n * @hidden\n * @private\n */\n this.sections = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (document === null) {\n // throw new Error('ArgumentNullException : document');\n // }\n this.pdfDocument = document.clone();\n this.initialize();\n }\n Object.defineProperty(PdfSectionCollection.prototype, \"section\", {\n //Properties\n /**\n * Gets the `Section` collection.\n */\n get: function () {\n return this.sections;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"document\", {\n /**\n * Gets a parent `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"count\", {\n /**\n * Gets the `number of sections` in a document.\n * @private\n */\n get: function () {\n return this.sections.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pages;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Initializes the object`.\n * @private\n */\n PdfSectionCollection.prototype.initialize = function () {\n this.sectionCount = new PdfNumber(0);\n this.sectionCollection = new PdfArray();\n this.pages = new PdfDictionary();\n this.pages.beginSave = new SaveSectionCollectionEventHandler(this);\n this.pages.items.setValue(this.dictionaryProperties.type, new PdfName('Pages'));\n this.pages.items.setValue(this.dictionaryProperties.kids, this.sectionCollection);\n this.pages.items.setValue(this.dictionaryProperties.count, this.sectionCount);\n this.pages.items.setValue(this.dictionaryProperties.resources, new PdfDictionary());\n this.setPageSettings(this.pages, this.pdfDocument.pageSettings);\n };\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n PdfSectionCollection.prototype.pdfSectionCollection = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException()');\n }\n return this.sections[index];\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSectionCollection.prototype.setPageSettings = function (container, pageSettings) {\n // if (container === null) {\n // throw new Error('ArgumentNullException : container');\n // }\n // if (pageSettings === null) {\n // throw new Error('ArgumentNullException : pageSettings');\n // }\n var bounds = new RectangleF(new PointF(), pageSettings.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n };\n /**\n * `Adds` the specified section.\n * @private\n */\n PdfSectionCollection.prototype.add = function (section) {\n if (typeof section === 'undefined') {\n var section_1 = new PdfSection(this.pdfDocument);\n this.add(section_1);\n return section_1;\n }\n else {\n // if (section === null) {\n // throw new Error('ArgumentNullException : section');\n // }\n var r = this.checkSection(section);\n this.sections.push(section);\n section.parent = this;\n this.sectionCollection.add(r);\n return this.sections.indexOf(section);\n }\n };\n /**\n * `Checks` if the section is within the collection.\n * @private\n */\n PdfSectionCollection.prototype.checkSection = function (section) {\n var r = new PdfReferenceHolder(section);\n var contains = this.sectionCollection.contains(r);\n // if (contains) {\n // throw new Error('ArgumentException : The object can not be added twice to the collection,section');\n // }\n return r;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @private\n */\n PdfSectionCollection.prototype.countPages = function () {\n var count = 0;\n this.sections.forEach(function (n) { return (count += n.count); });\n return count;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @hidden\n * @private\n */\n PdfSectionCollection.prototype.beginSave = function () {\n this.sectionCount.intValue = this.countPages();\n };\n //Fields\n /**\n * Rotate factor for page `rotation`.\n * @default 90\n * @private\n */\n PdfSectionCollection.rotateFactor = 90;\n return PdfSectionCollection;\n}());\nexport { PdfSectionCollection };\n","import { PdfPage } from './pdf-page';\nimport { Dictionary } from './../collections/dictionary';\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nvar PdfDocumentPageCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfPageCollection` class.\n * @private\n */\n function PdfDocumentPageCollection(document) {\n /**\n * It holds the page collection with the `index`.\n * @private\n */\n this.pdfPageCollectionIndex = new Dictionary();\n this.document = document;\n }\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"count\", {\n //Property\n /**\n * Gets the total `number of the pages`.\n * @private\n */\n get: function () {\n return this.countPages();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"pageCollectionIndex\", {\n /**\n * Gets a `page index` from the document.\n * @private\n */\n get: function () {\n return this.pdfPageCollectionIndex;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocumentPageCollection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var section = this.getLastSection();\n section.add(page);\n }\n };\n /**\n * Returns `last section` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getLastSection = function () {\n var sc = this.document.sections;\n if (sc.section.length === 0) {\n sc.add();\n }\n var section = sc.section[sc.section.length - 1];\n return section;\n };\n /**\n * Called when `new page has been added`.\n * @private\n */\n PdfDocumentPageCollection.prototype.onPageAdded = function (args) {\n // if (PageAdded !== null)\n // {\n // PageAdded(this, args);\n // }\n };\n /**\n * Gets the `total number of pages`.\n * @private\n */\n PdfDocumentPageCollection.prototype.countPages = function () {\n var sc = this.document.sections;\n var count = 0;\n for (var index = 0; index < sc.section.length; index++) {\n count += sc.section[index].count;\n }\n return count;\n };\n /**\n * Gets the `page object` from page index.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPageByIndex = function (index) {\n return this.getPage(index);\n };\n /**\n * Gets a page by its `index` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPage = function (index) {\n if ((index < 0) || (index >= this.count)) {\n throw Error('ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\")');\n }\n var page = null;\n var sectionStartIndex = 0;\n var sectionCount = 0;\n var pageIndex = 0;\n var length = this.document.sections.count;\n for (var i = 0; i < length; i++) {\n var section = this.document.sections.section[i];\n sectionCount = section.count;\n pageIndex = index - sectionStartIndex;\n // We found a section containing the page.\n if ((index >= sectionStartIndex && pageIndex < sectionCount)) {\n page = section.getPages()[pageIndex];\n break;\n }\n sectionStartIndex += sectionCount;\n }\n return page;\n };\n /**\n * Gets the `index of` the page in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.indexOf = function (page) {\n var index = -1;\n if (page == null) {\n throw new Error('ArgumentNullException: page');\n }\n else {\n var numPages = 0;\n for (var i = 0, len = this.document.sections.count; i < len; i++) {\n var section = this.document.sections.pdfSectionCollection(i);\n index = section.indexOf(page);\n if (index >= 0) {\n index += numPages;\n break;\n }\n else {\n index = -1;\n }\n numPages += section.count;\n }\n }\n return index;\n };\n /**\n * `Removes` the specified page.\n * @private\n */\n PdfDocumentPageCollection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var section = null;\n var len;\n for (var i = 0, len_1 = this.document.sections.count; i < len_1; i++) {\n section = this.document.sections.pdfSectionCollection(i);\n if (section.pages.contains(page)) {\n section.pages.remove(page);\n break;\n }\n }\n return section;\n };\n return PdfDocumentPageCollection;\n}());\nexport { PdfDocumentPageCollection };\n","/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\n/**\n * `Collection of the cached objects`.\n * @private\n */\nvar PdfCacheCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfCacheCollection` class.\n * @private\n */\n function PdfCacheCollection() {\n this.referenceObjects = [];\n this.pdfFontCollection = new Dictionary();\n }\n // Public methods\n /**\n * `Searches` for the similar cached object. If is not found - adds the object to the cache.\n * @private\n */\n PdfCacheCollection.prototype.search = function (obj) {\n var result = null;\n var group = this.getGroup(obj);\n if (group == null) {\n group = this.createNewGroup();\n }\n else if (group.length > 0) {\n result = group[0];\n }\n group.push(obj);\n return result;\n };\n // Implementation\n /**\n * `Creates` a new group.\n * @private\n */\n PdfCacheCollection.prototype.createNewGroup = function () {\n var group = [];\n this.referenceObjects.push(group);\n return group;\n };\n /**\n * `Find and Return` a group.\n * @private\n */\n PdfCacheCollection.prototype.getGroup = function (result) {\n var group = null;\n if (result !== null) {\n var len = this.referenceObjects.length;\n for (var i = 0; i < len; i++) {\n if (this.referenceObjects.length > 0) {\n var tGroup = this.referenceObjects[i];\n if (tGroup.length > 0) {\n var representative = tGroup[0];\n if (result.equalsTo(representative)) {\n group = tGroup;\n break;\n }\n }\n else {\n this.removeGroup(tGroup);\n }\n }\n len = this.referenceObjects.length;\n }\n }\n return group;\n };\n /**\n * Remove a group from the storage.\n */\n PdfCacheCollection.prototype.removeGroup = function (group) {\n if (group !== null) {\n var index = this.referenceObjects.indexOf(group);\n this.referenceObjects.slice(index, index + 1);\n }\n };\n PdfCacheCollection.prototype.destroy = function () {\n this.pdfFontCollection = undefined;\n this.referenceObjects = undefined;\n };\n return PdfCacheCollection;\n}());\nexport { PdfCacheCollection };\n","/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\nimport { PdfFontStyle, PdfFontFamily } from './enum';\nimport { PdfFontMetrics, StandardWidthTable } from './pdf-font-metrics';\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nvar PdfStandardFontMetricsFactory = /** @class */ (function () {\n function PdfStandardFontMetricsFactory() {\n }\n /**\n * Returns `metrics` of the font.\n * @private\n */\n PdfStandardFontMetricsFactory.getMetrics = function (fontFamily, fontStyle, size) {\n var metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.Helvetica:\n metrics = this.getHelveticaMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Courier:\n metrics = this.getCourierMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.TimesRoman:\n metrics = this.getTimesMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Symbol:\n metrics = this.getSymbolMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.ZapfDingbats:\n metrics = this.getZapfDingbatsMetrics(fontFamily, fontStyle, size);\n break;\n default:\n metrics = this.getHelveticaMetrics(PdfFontFamily.Helvetica, fontStyle, size);\n break;\n }\n metrics.name = fontFamily.toString();\n metrics.subScriptSizeFactor = this.subSuperScriptFactor;\n metrics.superscriptSizeFactor = this.subSuperScriptFactor;\n return metrics;\n };\n // Implementation\n /**\n * Creates `Helvetica font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getHelveticaMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaBoldItalicAscent;\n metrics.descent = this.helveticaBoldItalicDescent;\n metrics.postScriptName = this.helveticaBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.helveticaBoldAscent;\n metrics.descent = this.helveticaBoldDescent;\n metrics.postScriptName = this.helveticaBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaItalicAscent;\n metrics.descent = this.helveticaItalicDescent;\n metrics.postScriptName = this.helveticaItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.helveticaAscent;\n metrics.descent = this.helveticaDescent;\n metrics.postScriptName = this.helveticaName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Courier font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getCourierMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierBoldItalicAscent;\n metrics.descent = this.courierBoldItalicDescent;\n metrics.postScriptName = this.courierBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.courierBoldAscent;\n metrics.descent = this.courierBoldDescent;\n metrics.postScriptName = this.courierBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierItalicAscent;\n metrics.descent = this.courierItalicDescent;\n metrics.postScriptName = this.courierItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.courierAscent;\n metrics.descent = this.courierDescent;\n metrics.postScriptName = this.courierName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Times font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getTimesMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesBoldItalicAscent;\n metrics.descent = this.timesBoldItalicDescent;\n metrics.postScriptName = this.timesBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldItalicWidths);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.timesBoldAscent;\n metrics.descent = this.timesBoldDescent;\n metrics.postScriptName = this.timesBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesItalicAscent;\n metrics.descent = this.timesItalicDescent;\n metrics.postScriptName = this.timesItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanItalicWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.timesAscent;\n metrics.descent = this.timesDescent;\n metrics.postScriptName = this.timesName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Symbol font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getSymbolMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.symbolAscent;\n metrics.descent = this.symbolDescent;\n metrics.postScriptName = this.symbolName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.symbolWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * Creates `ZapfDingbats font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getZapfDingbatsMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.zapfDingbatsAscent;\n metrics.descent = this.zapfDingbatsDescent;\n metrics.postScriptName = this.zapfDingbatsName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.zapfDingbatsWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * `Multiplier` os subscript superscript.\n * @private\n */\n PdfStandardFontMetricsFactory.subSuperScriptFactor = 1.52;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaName = 'Helvetica';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldName = 'Helvetica-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicName = 'Helvetica-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicName = 'Helvetica-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierName = 'Courier';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldName = 'Courier-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicName = 'Courier-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicName = 'Courier-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesAscent = 898;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesName = 'Times-Roman';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldAscent = 935;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldName = 'Times-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicAscent = 883;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicDescent = -217;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicName = 'Times-Italic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicAscent = 921;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicName = 'Times-BoldItalic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolAscent = 1010;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolDescent = -293;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolName = 'Symbol';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsAscent = 820;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsDescent = -143;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsName = 'ZapfDingbats';\n /**\n * `Arial` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Arial bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n ];\n /**\n * `Fixed` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n ];\n /**\n * `Times` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n ];\n /**\n * `Times bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Times italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n ];\n /**\n * `Times bold italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n ];\n /**\n * `Symbol` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n ];\n /**\n * `Zip dingbats` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n ];\n return PdfStandardFontMetricsFactory;\n}());\nexport { PdfStandardFontMetricsFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFontFamily, PdfFontStyle, FontEncoding } from './enum';\nimport { PdfFont } from './pdf-font';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStandardFontMetricsFactory } from './pdf-standard-font-metrics-factory';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\n/**\n * Represents one of the 14 standard fonts.\n * It's used to create a standard PDF font to draw the text in to the PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStandardFont = /** @class */ (function (_super) {\n __extends(PdfStandardFont, _super);\n function PdfStandardFont(fontFamilyPrototype, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? ((fontFamilyPrototype instanceof PdfStandardFont) ? fontFamilyPrototype.style : PdfFontStyle.Regular) : style) || this;\n /**\n * Gets `ascent` of the font.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n /**\n * Gets `encodings` for internal class use.\n * @hidden\n * @private\n */\n _this.encodings = ['Unknown', 'StandardEncoding', 'MacRomanEncoding', 'MacExpertEncoding',\n 'WinAnsiEncoding', 'PDFDocEncoding', 'IdentityH'];\n if (typeof fontFamilyPrototype === 'undefined') {\n _this.pdfFontFamily = PdfFontFamily.Helvetica;\n }\n else if ((fontFamilyPrototype instanceof PdfStandardFont)) {\n _this.pdfFontFamily = fontFamilyPrototype.fontFamily;\n }\n else {\n _this.pdfFontFamily = fontFamilyPrototype;\n }\n _this.checkStyle();\n _this.initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfStandardFont.prototype, \"fontFamily\", {\n /* tslint:enable */\n //Properties\n /**\n * Gets the `FontFamily`.\n * @private\n */\n get: function () {\n return this.pdfFontFamily;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * Checks font `style` of the font.\n * @private\n */\n PdfStandardFont.prototype.checkStyle = function () {\n if (this.fontFamily === PdfFontFamily.Symbol || this.fontFamily === PdfFontFamily.ZapfDingbats) {\n var style = this.style;\n style &= ~(PdfFontStyle.Bold | PdfFontStyle.Italic);\n this.setStyle(style);\n }\n };\n /**\n * Returns `width` of the line.\n * @public\n */\n PdfStandardFont.prototype.getLineWidth = function (line, format) {\n if (line == null) {\n throw new Error('ArgumentNullException:line');\n }\n var width = 0;\n var name = this.name;\n line = PdfStandardFont.convert(line);\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidthInternal(ch, format);\n width += charWidth;\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Checks whether fonts are `equals`.\n * @private\n */\n PdfStandardFont.prototype.equalsToFont = function (font) {\n var equal = false;\n var stFont = font;\n if (stFont != null) {\n var fontFamilyEqual = (this.fontFamily === stFont.fontFamily);\n var lineReducer = (~(PdfFontStyle.Underline | PdfFontStyle.Strikeout));\n var styleEqual = (this.style & lineReducer) === (stFont.style & lineReducer);\n equal = (fontFamilyEqual && styleEqual);\n }\n return equal;\n };\n /**\n * `Initializes` font internals..\n * @private\n */\n PdfStandardFont.prototype.initializeInternals = function () {\n var equalFont = null;\n // if (PdfDocument.EnableCache) {\n equalFont = PdfDocument.cache.search(this);\n // }\n var internals = null;\n // if (equalFont == null) {\n // Create font metrics.\n var metrics = PdfStandardFontMetricsFactory.getMetrics(this.pdfFontFamily, this.style, this.size);\n this.metrics = metrics;\n internals = this.createInternals();\n this.setInternals(internals);\n };\n /**\n * `Creates` font`s dictionary.\n * @private\n */\n PdfStandardFont.prototype.createInternals = function () {\n var dictionary = new PdfDictionary();\n dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type1));\n dictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.metrics.postScriptName));\n if (this.fontFamily !== PdfFontFamily.Symbol && this.fontFamily !== PdfFontFamily.ZapfDingbats) {\n var encoding = this.encodings[FontEncoding.WinAnsiEncoding];\n dictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(encoding));\n }\n return dictionary;\n };\n /**\n * Returns `width` of the char. This methods doesn`t takes into consideration font`s size.\n * @private\n */\n PdfStandardFont.prototype.getCharWidthInternal = function (charCode, format) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this.name === '0' || this.name === '1' || this.name === '2' ||\n this.name === '3' || this.name === '4') {\n code = code - PdfStandardFont.charOffset;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var metrics = this.metrics;\n var widthTable = metrics.widthTable;\n width = widthTable.items(code);\n return width;\n };\n /**\n * `Converts` the specified text.\n * @private\n */\n PdfStandardFont.convert = function (text) {\n return text;\n };\n //Constants\n /**\n * First character `position`.\n * @private\n */\n PdfStandardFont.charOffset = 32;\n return PdfStandardFont;\n}(PdfFont));\nexport { PdfStandardFont };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfWriter } from './../input-output/pdf-writer';\nimport { PdfMainObjectCollection } from './../input-output/pdf-main-object-collection';\nimport { PdfDocumentBase } from './pdf-document-base';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfCatalog } from './pdf-catalog';\nimport { PdfPageSettings } from './../pages/pdf-page-settings';\nimport { PdfSectionCollection } from './../pages/pdf-section-collection';\nimport { PdfDocumentPageCollection } from './../pages/pdf-document-page-collection';\nimport { PdfCacheCollection } from './../general/pdf-cache-collection';\nimport { PdfColorSpace } from './../graphics/enum';\nimport { PdfDocumentTemplate } from './pdf-document-template';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\n/**\n * Represents a PDF document and can be used to create a new PDF document from the scratch.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocument = /** @class */ (function (_super) {\n __extends(PdfDocument, _super);\n function PdfDocument(isMerging) {\n var _this = _super.call(this) || this;\n /**\n * Default `margin` value.\n * @default 40.0\n * @private\n */\n _this.defaultMargin = 40.0;\n /**\n * Internal variable to store instance of `StreamWriter` classes..\n * @default null\n * @private\n */\n _this.streamWriter = null;\n _this.document = _this;\n var isMerge = false;\n if (typeof isMerging === 'undefined') {\n PdfDocument.cacheCollection = new PdfCacheCollection();\n isMerge = false;\n }\n else {\n isMerge = isMerging;\n }\n var objects = new PdfMainObjectCollection();\n _this.setMainObjectCollection(objects);\n var crossTable = new PdfCrossTable();\n crossTable.isMerging = isMerge;\n crossTable.document = _this;\n _this.setCrossTable(crossTable);\n var catalog = new PdfCatalog();\n _this.setCatalog(catalog);\n objects.add(catalog);\n catalog.position = -1;\n _this.sectionCollection = new PdfSectionCollection(_this);\n _this.documentPageCollection = new PdfDocumentPageCollection(_this);\n catalog.pages = _this.sectionCollection;\n return _this;\n }\n Object.defineProperty(PdfDocument, \"defaultFont\", {\n //Properties\n /**\n * Gets the `default font`. It is used for complex objects when font is not explicitly defined.\n * @private\n */\n get: function () {\n if (this.defaultStandardFont == null) {\n this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);\n }\n return this.defaultStandardFont;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"sections\", {\n /**\n * Gets the collection of the `sections` in the document.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pageSettings\", {\n /**\n * Gets the document's page setting.\n * @public\n */\n get: function () {\n if (this.settings == null) {\n this.settings = new PdfPageSettings(this.defaultMargin);\n }\n return this.settings;\n },\n /**\n * Sets the document's page setting.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n *\n * // sets the right margin of the page\n * document.pageSettings.margins.right = 0;\n * // set the page size.\n * document.pageSettings.size = new SizeF(500, 500);\n * // change the page orientation to landscape\n * document.pageSettings.orientation = PdfPageOrientation.Landscape;\n * // apply 90 degree rotation on the page\n * document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;\n *\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set the specified Point\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this.settings = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pages\", {\n /**\n * Represents the collection of pages in the PDF document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // get the collection of pages in the document\n * let pageCollection : PdfDocumentPageCollection = document.pages;\n * //\n * // add pages\n * let page1 : PdfPage = pageCollection.add();\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.documentPageCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"cache\", {\n /**\n * Gets collection of the `cached objects`.\n * @private\n */\n get: function () {\n if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {\n return new PdfCacheCollection();\n }\n return PdfDocument.cacheCollection;\n },\n /**\n * Sets collection of the `cached objects`.\n * @private\n */\n set: function (value) {\n this.cacheCollection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"enableCache\", {\n /**\n * Gets the value of enable cache.\n * @private\n */\n get: function () {\n return this.isCacheEnabled;\n },\n /**\n * Sets thie value of enable cache.\n * @private\n */\n set: function (value) {\n this.isCacheEnabled = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"colorSpace\", {\n /* tslint:disable */\n /**\n * Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.\n * @private\n */\n get: function () {\n if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)\n || (this.pdfColorSpace === PdfColorSpace.GrayScale))) {\n return this.pdfColorSpace;\n }\n else {\n return PdfColorSpace.Rgb;\n }\n },\n set: function (value) {\n if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||\n (value === PdfColorSpace.GrayScale))) {\n this.pdfColorSpace = value;\n }\n else {\n this.pdfColorSpace = PdfColorSpace.Rgb;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"template\", {\n /* tslint:enable */\n /**\n * Gets or sets a `template` to all pages in the document.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfDocumentTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocument.prototype.docSave = function (stream, arg2, arg3) {\n this.checkPagesPresence();\n if (stream === null) {\n throw new Error('ArgumentNullException : stream');\n }\n this.streamWriter = stream;\n var writer = new PdfWriter(stream);\n writer.document = this;\n if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {\n return this.crossTable.save(writer);\n }\n else {\n this.crossTable.save(writer, arg2);\n }\n };\n /**\n * Checks the pages `presence`.\n * @private\n */\n PdfDocument.prototype.checkPagesPresence = function () {\n if (this.pages.count === 0) {\n this.pages.add();\n }\n };\n /**\n * disposes the current instance of `PdfDocument` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.destroy = function () {\n this.catalog = undefined;\n this.colorSpace = undefined;\n this.currentSavingObj = undefined;\n this.documentPageCollection = undefined;\n this.isStreamCopied = undefined;\n this.pageSettings = undefined;\n this.pageTemplate = undefined;\n this.pdfColorSpace = undefined;\n this.sectionCollection = undefined;\n PdfDocument.cache.destroy();\n this.crossTable.pdfObjects.destroy();\n PdfDocument.cache = undefined;\n this.streamWriter.destroy();\n };\n /**\n * `Font` used in complex objects to draw strings and text when it is not defined explicitly.\n * @default null\n * @private\n */\n PdfDocument.defaultStandardFont = null;\n /**\n * Indicates whether enable cache or not\n * @default true\n * @private\n */\n PdfDocument.isCacheEnabled = true;\n return PdfDocument;\n}(PdfDocumentBase));\nexport { PdfDocument };\n","/**\n * PdfBorders.ts class for EJ2-PDF\n */\nimport { PdfPen } from './../../../graphics/pdf-pen';\nimport { PdfDashStyle } from './../../../graphics/enum';\nimport { PdfColor } from './../../../graphics/pdf-color';\n/**\n * `PdfBorders` class used represents the cell border of the PDF grid.\n */\nvar PdfBorders = /** @class */ (function () {\n // Constructor\n /**\n * Create a new instance for `PdfBorders` class.\n * @private\n */\n function PdfBorders() {\n var defaultBorderPenLeft = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenLeft.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenRight = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenRight.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenTop = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenTop.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenBottom = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenBottom.dashStyle = PdfDashStyle.Solid;\n this.leftPen = defaultBorderPenLeft;\n this.rightPen = defaultBorderPenRight;\n this.topPen = defaultBorderPenTop;\n this.bottomPen = defaultBorderPenBottom;\n }\n Object.defineProperty(PdfBorders.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `Left`.\n * @private\n */\n get: function () {\n return this.leftPen;\n },\n set: function (value) {\n this.leftPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"right\", {\n /**\n * Gets or sets the `Right`.\n * @private\n */\n get: function () {\n return this.rightPen;\n },\n set: function (value) {\n this.rightPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"top\", {\n /**\n * Gets or sets the `Top`.\n * @private\n */\n get: function () {\n return this.topPen;\n },\n set: function (value) {\n this.topPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"bottom\", {\n /**\n * Gets or sets the `Bottom`.\n * @private\n */\n get: function () {\n return this.bottomPen;\n },\n set: function (value) {\n this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"all\", {\n /**\n * sets the `All`.\n * @private\n */\n set: function (value) {\n this.leftPen = this.rightPen = this.topPen = this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"isAll\", {\n /**\n * Gets a value indicating whether this instance `is all`.\n * @private\n */\n get: function () {\n return ((this.leftPen === this.rightPen) && (this.leftPen === this.topPen) && (this.leftPen === this.bottomPen));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders, \"default\", {\n /**\n * Gets the `default`.\n * @private\n */\n get: function () {\n return new PdfBorders();\n },\n enumerable: true,\n configurable: true\n });\n return PdfBorders;\n}());\nexport { PdfBorders };\nvar PdfPaddings = /** @class */ (function () {\n function PdfPaddings(left, right, top, bottom) {\n /**\n * The 'left' border padding set.\n * @private\n */\n this.hasLeftPad = false;\n /**\n * The 'right' border padding set.\n * @private\n */\n this.hasRightPad = false;\n /**\n * The 'top' border padding set.\n * @private\n */\n this.hasTopPad = false;\n /**\n * The 'bottom' border padding set.\n * @private\n */\n this.hasBottomPad = false;\n if (typeof left === 'undefined') {\n //5.76 and 0 are taken from ms-word default table margins.\n this.leftPad = this.rightPad = 5.76;\n //0.5 is set for top and bottom by default.\n this.bottomPad = this.topPad = 0.5;\n }\n else {\n this.leftPad = left;\n this.rightPad = right;\n this.topPad = top;\n this.bottomPad = bottom;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n }\n }\n Object.defineProperty(PdfPaddings.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `left` value of the edge\n * @private\n */\n get: function () {\n return this.leftPad;\n },\n set: function (value) {\n this.leftPad = value;\n this.hasLeftPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"right\", {\n /**\n * Gets or sets the `right` value of the edge.\n * @private\n */\n get: function () {\n return this.rightPad;\n },\n set: function (value) {\n this.rightPad = value;\n this.hasRightPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"top\", {\n /**\n * Gets or sets the `top` value of the edge\n * @private\n */\n get: function () {\n return this.topPad;\n },\n set: function (value) {\n this.topPad = value;\n this.hasTopPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom` value of the edge.\n * @private\n */\n get: function () {\n return this.bottomPad;\n },\n set: function (value) {\n this.bottomPad = value;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"all\", {\n /**\n * Sets value to all sides `left,right,top and bottom`.s\n * @private\n */\n set: function (value) {\n this.leftPad = this.rightPad = this.topPad = this.bottomPad = value;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPaddings;\n}());\nexport { PdfPaddings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { PdfBorders, PdfPaddings } from './pdf-borders';\nimport { PdfBorderOverlapStyle } from './../../tables/light-tables/enum';\n/**\n * Base class for the `grid style`,\n */\nvar PdfGridStyleBase = /** @class */ (function () {\n function PdfGridStyleBase() {\n }\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridBackgroundBrush;\n },\n set: function (value) {\n this.gridBackgroundBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridTextBrush;\n },\n set: function (value) {\n this.gridTextBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridTextPen;\n },\n set: function (value) {\n this.gridTextPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridFont;\n },\n set: function (value) {\n this.gridFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `background Image`.\n * @private\n */\n get: function () {\n return this.gridBackgroundImage;\n },\n set: function (value) {\n this.gridBackgroundImage = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyleBase;\n}());\nexport { PdfGridStyleBase };\n/**\n * `PdfGridStyle` class provides customization of the appearance for the 'PdfGrid'.\n */\nvar PdfGridStyle = /** @class */ (function (_super) {\n __extends(PdfGridStyle, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGridStyle` class.\n * @private\n */\n function PdfGridStyle() {\n var _this = _super.call(this) || this;\n _this.gridBorderOverlapStyle = PdfBorderOverlapStyle.Overlap;\n _this.bAllowHorizontalOverflow = false;\n _this.gridHorizontalOverflowType = PdfHorizontalOverflowType.LastPage;\n return _this;\n }\n Object.defineProperty(PdfGridStyle.prototype, \"cellSpacing\", {\n //Properties\n /**\n * Gets or sets the `cell spacing` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n if (typeof this.gridCellSpacing === 'undefined') {\n this.gridCellSpacing = 0;\n }\n return this.gridCellSpacing;\n },\n set: function (value) {\n this.gridCellSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"horizontalOverflowType\", {\n /**\n * Gets or sets the type of the `horizontal overflow` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridHorizontalOverflowType;\n },\n set: function (value) {\n this.gridHorizontalOverflowType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"allowHorizontalOverflow\", {\n /**\n * Gets or sets a value indicating whether to `allow horizontal overflow`.\n * @private\n */\n get: function () {\n return this.bAllowHorizontalOverflow;\n },\n set: function (value) {\n this.bAllowHorizontalOverflow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n return this.gridCellPadding;\n },\n set: function (value) {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n this.gridCellPadding = value;\n }\n else {\n this.gridCellPadding = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"borderOverlapStyle\", {\n /**\n * Gets or sets the `border overlap style` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridBorderOverlapStyle;\n },\n set: function (value) {\n this.gridBorderOverlapStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyle;\n}(PdfGridStyleBase));\nexport { PdfGridStyle };\n/**\n * `PdfGridCellStyle` class provides customization of the appearance for the 'PdfGridCell'.\n */\nvar PdfGridCellStyle = /** @class */ (function (_super) {\n __extends(PdfGridCellStyle, _super);\n /**\n * Initializes a new instance of the `PdfGridCellStyle` class.\n * @private\n */\n function PdfGridCellStyle() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridCellBorders = PdfBorders.default;\n return _this;\n }\n Object.defineProperty(PdfGridCellStyle.prototype, \"stringFormat\", {\n //Properties\n /**\n * Gets the `string format` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"borders\", {\n /**\n * Gets or sets the `border` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridCellBorders;\n },\n set: function (value) {\n this.gridCellBorders = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n return this.gridCellPadding;\n },\n set: function (value) {\n if (this.gridCellPadding == null || typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n this.gridCellPadding = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridCellStyle;\n}(PdfGridStyleBase));\nexport { PdfGridCellStyle };\n/**\n * `PdfGridRowStyle` class provides customization of the appearance for the `PdfGridRow`.\n */\nvar PdfGridRowStyle = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowStyle` class.\n * @private\n */\n function PdfGridRowStyle() {\n //\n }\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBackgroundBrush = function (value) {\n this.gridRowBackgroundBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.backgroundBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridRowTextBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextBrush = function (value) {\n this.gridRowTextBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridRowTextPen;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextPen = function (value) {\n this.gridRowTextPen = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textPen = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridRowFont;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setFont = function (value) {\n this.gridRowFont = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.font = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"border\", {\n /**\n * Gets or sets the `border` of the current row.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBorder === 'undefined') {\n this.setBorder(new PdfBorders());\n }\n return this.gridRowBorder;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBorder = function (value) {\n this.gridRowBorder = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.borders = value;\n }\n }\n };\n /**\n * sets the `parent row` of the current object.\n * @private\n */\n PdfGridRowStyle.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundImage;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n PdfGridRowStyle.prototype.setBackgroundImage = function (value) {\n this.gridRowBackgroundImage = value;\n };\n return PdfGridRowStyle;\n}());\nexport { PdfGridRowStyle };\n/**\n * public Enum for `PdfHorizontalOverflowType`.\n * @private\n */\nexport var PdfHorizontalOverflowType;\n(function (PdfHorizontalOverflowType) {\n /**\n * Specifies the type of `NextPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"NextPage\"] = 0] = \"NextPage\";\n /**\n * Specifies the type of `LastPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"LastPage\"] = 1] = \"LastPage\";\n})(PdfHorizontalOverflowType || (PdfHorizontalOverflowType = {}));\n","/**\n * ElementLayouter.ts class for EJ2-PDF\n */\nimport { RectangleF } from './../../../drawing/pdf-drawing';\n/**\n * Base class for `elements lay outing`.\n * @private\n */\nvar ElementLayouter = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `ElementLayouter` class.\n * @private\n */\n function ElementLayouter(element) {\n this.layoutElement = element;\n }\n Object.defineProperty(ElementLayouter.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.layoutElement;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `element`.\n * @private\n */\n ElementLayouter.prototype.getElement = function () {\n return this.layoutElement;\n };\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n ElementLayouter.prototype.layout = function (param) {\n return this.layoutInternal(param);\n };\n ElementLayouter.prototype.Layouter = function (param) {\n return this.layoutInternal(param);\n };\n /**\n * Returns the `next page`.\n * @private\n */\n ElementLayouter.prototype.getNextPage = function (currentPage) {\n var section = currentPage.section;\n var nextPage = section.add();\n return nextPage;\n };\n ElementLayouter.prototype.getPaginateBounds = function (param) {\n if ((param == null)) {\n throw new Error('ArgumentNullException : param');\n }\n var result = param.format.usePaginateBounds ? param.format.paginateBounds\n : new RectangleF(param.bounds.x, 0, param.bounds.width, param.bounds.height);\n return result;\n };\n return ElementLayouter;\n}());\nexport { ElementLayouter };\nvar PdfLayoutFormat = /** @class */ (function () {\n function PdfLayoutFormat(baseFormat) {\n if (typeof baseFormat === 'undefined') {\n //\n }\n else {\n this.break = baseFormat.break;\n this.layout = baseFormat.layout;\n this.paginateBounds = baseFormat.paginateBounds;\n this.boundsSet = baseFormat.usePaginateBounds;\n }\n }\n Object.defineProperty(PdfLayoutFormat.prototype, \"layout\", {\n // Properties\n /**\n * Gets or sets `layout` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.layoutType === 'undefined' || this.layoutType == null) {\n // this.layoutType = PdfLayoutType.Paginate;\n // }\n return this.layoutType;\n },\n set: function (value) {\n this.layoutType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"break\", {\n /**\n * Gets or sets `break` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.breakType === 'undefined' || this.boundsSet == null) {\n // this.breakType = PdfLayoutBreakType.FitPage;\n // }\n return this.breakType;\n },\n set: function (value) {\n this.breakType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"paginateBounds\", {\n /**\n * Gets or sets the `bounds` on the next page.\n * @private\n */\n get: function () {\n if (typeof this.layoutPaginateBounds === 'undefined' && this.layoutPaginateBounds == null) {\n this.layoutPaginateBounds = new RectangleF(0, 0, 0, 0);\n }\n return this.layoutPaginateBounds;\n },\n set: function (value) {\n this.layoutPaginateBounds = value;\n this.boundsSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"usePaginateBounds\", {\n /**\n * Gets a value indicating whether [`use paginate bounds`].\n * @private\n */\n get: function () {\n // if (typeof this.boundsSet === 'undefined' || this.boundsSet == null) {\n // this.boundsSet = false;\n // }\n return this.boundsSet;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutFormat;\n}());\nexport { PdfLayoutFormat };\nvar PdfLayoutParams = /** @class */ (function () {\n function PdfLayoutParams() {\n }\n Object.defineProperty(PdfLayoutParams.prototype, \"page\", {\n // Properties\n /**\n * Gets or sets the layout `page` for the element.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n set: function (value) {\n this.pdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"bounds\", {\n /**\n * Gets or sets layout `bounds` for the element.\n * @private\n */\n get: function () {\n return new RectangleF(this.layoutBounds.x, this.layoutBounds.y, this.layoutBounds.width, this.layoutBounds.height);\n },\n set: function (value) {\n this.layoutBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"format\", {\n /**\n * Gets or sets `layout settings` for the element.\n * @private\n */\n get: function () {\n return this.layoutFormat;\n },\n set: function (value) {\n this.layoutFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutParams;\n}());\nexport { PdfLayoutParams };\nvar PdfLayoutResult = /** @class */ (function () {\n // Constructors\n /**\n * Initializes the new instance of `PdfLayoutResult` class.\n * @private\n */\n function PdfLayoutResult(page, bounds) {\n this.pdfPage = page;\n this.layoutBounds = bounds;\n }\n Object.defineProperty(PdfLayoutResult.prototype, \"page\", {\n // Properties\n /**\n * Gets the last `page` where the element was drawn.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutResult.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of the element on the last page where it was drawn.\n * @private\n */\n get: function () {\n return this.layoutBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutResult;\n}());\nexport { PdfLayoutResult };\n","import { RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutParams, PdfLayoutFormat } from './base/element-layouter';\nimport { PdfBorders } from './../../structured-elements/grid/styles/pdf-borders';\n/**\n * `PdfLayoutElement` class represents the base class for all elements that can be layout on the pages.\n * @private\n */\nvar PdfLayoutElement = /** @class */ (function () {\n function PdfLayoutElement() {\n }\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseBeginPageLayout\", {\n // Property\n /**\n * Gets a value indicating whether the `start page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseEndPageLayout\", {\n /**\n * Gets a value indicating whether the `ending page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n //Event Handlers\n PdfLayoutElement.prototype.onBeginPageLayout = function (args) {\n if (this.beginPageLayout) {\n this.beginPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.onEndPageLayout = function (args) {\n if (this.endPageLayout) {\n this.endPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.drawHelper = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n return this.drawHelper(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawHelper(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n this.bEmbedFonts = arg4;\n return this.drawHelper(arg2, arg3, null);\n }\n else {\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n if (param != null) {\n var x = param.bounds.x;\n var y = param.bounds.y;\n if (param.bounds.x === 0) {\n x = PdfBorders.default.right.width / 2;\n }\n if (param.bounds.y === 0) {\n y = PdfBorders.default.top.width / 2;\n }\n var newBound = new RectangleF(x, y, param.bounds.width, param.bounds.height);\n param.bounds = newBound;\n }\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n var result = this.layout(param);\n return result;\n }\n };\n return PdfLayoutElement;\n}());\nexport { PdfLayoutElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * TextLayouter.ts class for EJ2-PDF\n */\nimport { ElementLayouter, PdfLayoutResult } from './element-layouter';\nimport { RectangleF, SizeF } from './../../../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../../fonts/string-layouter';\nimport { PdfLayoutBreakType } from './../../figures/enum';\nimport { PdfColor } from './../../pdf-color';\nimport { PdfTextWebLink } from './../../../annotations/pdf-text-web-link';\n/**\n * Class that `layouts the text`.\n * @private\n */\nvar TextLayouter = /** @class */ (function (_super) {\n __extends(TextLayouter, _super);\n // Constructors\n /**\n * Initializes a new instance of the `TextLayouter` class.\n * @private\n */\n function TextLayouter(element) {\n return _super.call(this, element) || this;\n }\n Object.defineProperty(TextLayouter.prototype, \"element\", {\n /**\n * Gets the layout `element`.\n * @private\n */\n get: function () {\n return _super.prototype.getElement.call(this);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n TextLayouter.prototype.layoutInternal = function (param) {\n /* tslint:disable */\n this.format = (this.element.stringFormat !== null && typeof this.element.stringFormat !== 'undefined') ? this.element.stringFormat : null;\n var currentPage = param.page;\n var currentBounds = param.bounds;\n var text = this.element.value;\n var result = null;\n var pageResult = new TextPageLayoutResult();\n pageResult.page = currentPage;\n pageResult.remainder = text;\n for (;;) {\n pageResult = this.layoutOnPage(text, currentPage, currentBounds, param);\n result = this.getLayoutResult(pageResult);\n break;\n }\n /* tslint:enable */\n return result;\n };\n /**\n * Raises `PageLayout` event if needed.\n * @private\n */\n TextLayouter.prototype.getLayoutResult = function (pageResult) {\n var result = new PdfTextLayoutResult(pageResult.page, pageResult.bounds, pageResult.remainder, pageResult.lastLineBounds);\n return result;\n };\n /* tslint:disable */\n /**\n * `Layouts` the text on the page.\n * @private\n */\n TextLayouter.prototype.layoutOnPage = function (text, currentPage, currentBounds, param) {\n var result = new TextPageLayoutResult();\n result.remainder = text;\n result.page = currentPage;\n currentBounds = this.checkCorrectBounds(currentPage, currentBounds);\n var layouter = new PdfStringLayouter();\n var stringResult = layouter.layout(text, this.element.font, this.format, currentBounds, currentPage.getClientSize().height, false, new SizeF(0, 0));\n var textFinished = (stringResult.remainder == null);\n var doesntFit = (param.format.break === PdfLayoutBreakType.FitElement);\n var canDraw = !(doesntFit || stringResult.empty);\n // Draw the text.\n var graphics = currentPage.graphics;\n var brush = this.element.getBrush();\n if (this.element instanceof PdfTextWebLink) {\n brush.color = new PdfColor(0, 0, 255);\n }\n graphics.drawStringLayoutResult(stringResult, this.element.font, this.element.pen, brush, currentBounds, this.format);\n var lineInfo = stringResult.lines[stringResult.lineCount - 1];\n result.lastLineBounds = graphics.getLineBounds(stringResult.lineCount - 1, stringResult, this.element.font, currentBounds, this.format);\n result.bounds = this.getTextPageBounds(currentPage, currentBounds, stringResult);\n result.remainder = stringResult.remainder;\n result.end = (textFinished);\n return result;\n };\n /* tslint:enable */\n /**\n * `Corrects current bounds` on the page.\n * @private\n */\n TextLayouter.prototype.checkCorrectBounds = function (currentPage, currentBounds) {\n var pageSize = currentPage.graphics.clientSize;\n currentBounds.height = (currentBounds.height > 0) ? currentBounds.height : pageSize.height - currentBounds.y;\n return currentBounds;\n };\n /**\n * Returns a `rectangle` where the text was printed on the page.\n * @private\n */\n /* tslint:disable */\n TextLayouter.prototype.getTextPageBounds = function (currentPage, currentBounds, stringResult) {\n var textSize = stringResult.actualSize;\n var x = currentBounds.x;\n var y = currentBounds.y;\n var width = (currentBounds.width > 0) ? currentBounds.width : textSize.width;\n var height = textSize.height;\n var shiftedRect = currentPage.graphics.checkCorrectLayoutRectangle(textSize, currentBounds.x, currentBounds.y, this.format);\n // if (currentBounds.width <= 0) {\n x = shiftedRect.x;\n // }\n var verticalShift = currentPage.graphics.getTextVerticalAlignShift(textSize.height, currentBounds.height, this.format);\n y += verticalShift;\n var bounds = new RectangleF(x, y, width, height);\n return bounds;\n };\n return TextLayouter;\n}(ElementLayouter));\nexport { TextLayouter };\nvar TextPageLayoutResult = /** @class */ (function () {\n function TextPageLayoutResult() {\n }\n return TextPageLayoutResult;\n}());\nexport { TextPageLayoutResult };\nvar PdfTextLayoutResult = /** @class */ (function (_super) {\n __extends(PdfTextLayoutResult, _super);\n // Constructors\n /**\n * Initializes the new instance of `PdfTextLayoutResult` class.\n * @private\n */\n function PdfTextLayoutResult(page, bounds, remainder, lastLineBounds) {\n var _this = _super.call(this, page, bounds) || this;\n _this.remainderText = remainder;\n _this.lastLineTextBounds = lastLineBounds;\n return _this;\n }\n Object.defineProperty(PdfTextLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets a value that contains the `text` that was not printed.\n * @private\n */\n get: function () {\n return this.remainderText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextLayoutResult.prototype, \"lastLineBounds\", {\n /**\n * Gets a value that indicates the `bounds` of the last line that was printed on the page.\n * @private\n */\n get: function () {\n return this.lastLineTextBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTextLayoutResult;\n}(PdfLayoutResult));\nexport { PdfTextLayoutResult };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * PdfTextElement.ts class for EJ2-PDF\n */\nimport { PdfLayoutElement } from './../figures/layout-element';\nimport { PdfBrush } from './../brushes/pdf-brush';\nimport { PdfFont } from './../fonts/pdf-font';\nimport { PdfStandardFont } from './../fonts/pdf-standard-font';\nimport { PdfPen } from './../pdf-pen';\nimport { PdfLayoutParams } from './../figures/base/element-layouter';\nimport { TextLayouter } from './base/text-layouter';\nimport { PdfSolidBrush } from './../brushes/pdf-solid-brush';\nimport { PdfColor } from './../pdf-color';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutFormat } from './base/element-layouter';\nimport { PdfStringLayouter } from './../fonts/string-layouter';\nimport { PdfTextAlignment } from './../enum';\n/**\n * `PdfTextElement` class represents the text area with the ability to span several pages\n * and inherited from the 'PdfLayoutElement' class.\n * @private\n */\nvar PdfTextElement = /** @class */ (function (_super) {\n __extends(PdfTextElement, _super);\n function PdfTextElement(arg1, arg2, arg3, arg4, arg5) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * `Text` data.\n * @private\n */\n _this.content = '';\n /**\n * `Value` of text data.\n * @private\n */\n _this.elementValue = '';\n /**\n * indicate whether the drawText with PointF overload is called or not.\n * @default false\n * @private\n */\n _this.hasPointOverload = false;\n /**\n * indicate whether the PdfGridCell value is `PdfTextElement`\n * @default false\n * @private\n */\n _this.isPdfTextElement = false;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (typeof arg1 === 'string' && typeof arg2 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && typeof arg3 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfPen && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfBrush && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfBrush = arg3;\n }\n else {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n _this.pdfBrush = arg4;\n _this.format = arg5;\n }\n return _this;\n }\n Object.defineProperty(PdfTextElement.prototype, \"text\", {\n // Properties\n /**\n * Gets or sets a value indicating the `text` that should be printed.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.elementValue = value;\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"value\", {\n //get value\n /**\n * Gets or sets a `value` indicating the text that should be printed.\n * @private\n */\n get: function () {\n return this.elementValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"pen\", {\n //get pen\n /**\n * Gets or sets a `PdfPen` that determines the color, width, and style of the text\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n //Set pen value\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"brush\", {\n //get brush\n /**\n * Gets or sets the `PdfBrush` that will be used to draw the text with color and texture.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n //Set brush value\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"font\", {\n //get font\n /**\n * Gets or sets a `PdfFont` that defines the text format.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * //\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n if (this.pdfFont instanceof PdfStandardFont && this.content != null) {\n this.elementValue = PdfStandardFont.convert(this.content);\n }\n else {\n this.elementValue = this.content;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `PdfStringFormat` that will be used to set the string format\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Gets a `brush` for drawing.\n * @private\n */\n PdfTextElement.prototype.getBrush = function () {\n return (this.pdfBrush == null || typeof this.pdfBrush === 'undefined') ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.pdfBrush;\n };\n // /**\n // * `Draws` an element on the Graphics.\n // * @private\n // */\n // public drawInternal(graphics : PdfGraphics) : void {\n // graphics.drawString(this.elementValue, this.pdfFont, this.pdfPen, this.getBrush(), 0, 0, this.stringFormat);\n // }\n /**\n * `Layouts` the element.\n * @private\n */\n PdfTextElement.prototype.layout = function (param) {\n var layouter = new TextLayouter(this);\n var result = layouter.layout(param);\n return result;\n };\n PdfTextElement.prototype.drawText = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawText(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n this.hasPointOverload = true;\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawText(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n return this.drawText(arg2, arg3, null);\n }\n else {\n var layout = new PdfStringLayouter();\n if (this.hasPointOverload) {\n var stringLayoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg2.graphics.clientSize.width - arg3.x), 0), true, arg2.graphics.clientSize);\n var layoutResult = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n var previousPage = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (stringLayoutResult.lines.length > 1) {\n this.text = stringLayoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n layoutResult = this.layout(param);\n var bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, arg2.graphics.clientSize.width, stringLayoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < stringLayoutResult.lines.length; i++) {\n param.page = layoutResult.page;\n param.bounds = new RectangleF(new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n this.text = stringLayoutResult.layoutLines[i].text;\n if (bounds.y + stringLayoutResult.lineHeight > layoutResult.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (layoutResult.page.graphics.clientSize.height - layoutResult.bounds.height)) {\n bounds = new RectangleF(0, layoutResult.bounds.height, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(0, 0, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n layoutResult = this.layout(param);\n if (i !== (stringLayoutResult.lines.length - 1)) {\n bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n layoutResult = this.calculateResultBounds(layoutResult, lineWidth, layoutResult.page.graphics.clientSize.width, 0);\n }\n }\n }\n return layoutResult;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n layoutResult = this.layout(param);\n layoutResult = this.calculateResultBounds(layoutResult, lineSize.width, layoutResult.page.graphics.clientSize.width, 0);\n }\n return layoutResult;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg3.width, 0), false, arg2.graphics.clientSize);\n var result = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (layoutResult.lines.length > 1) {\n this.text = layoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n result = this.layout(param);\n var bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < layoutResult.lines.length; i++) {\n param.page = result.page;\n param.bounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n this.text = layoutResult.layoutLines[i].text;\n if (bounds.y + layoutResult.lineHeight > result.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (result.page.graphics.clientSize.height - result.bounds.height)) {\n bounds = new RectangleF(temparg3.x, layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(temparg3.x, 0, temparg3.width, layoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n result = this.layout(param);\n if (i !== (layoutResult.lines.length - 1)) {\n bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n result = this.calculateResultBounds(result, lineWidth, temparg3.width, temparg3.x);\n }\n }\n }\n return result;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n result = this.layout(param);\n result = this.calculateResultBounds(result, lineSize.width, temparg3.width, temparg3.x);\n }\n return result;\n }\n }\n }\n };\n PdfTextElement.prototype.calculateResultBounds = function (result, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth);\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n result.bounds.x = startPosition;\n result.bounds.width = maximumWidth;\n }\n else {\n result.bounds.width = startPosition;\n result.bounds.width = lineWidth;\n }\n return result;\n };\n return PdfTextElement;\n}(PdfLayoutElement));\nexport { PdfTextElement };\n","import { PdfColor } from './../graphics/pdf-color';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfDictionary, SaveAnnotationEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfString } from './../primitives/pdf-string';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfSolidBrush } from './../graphics/brushes/pdf-solid-brush';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStringFormat } from './../graphics/fonts/pdf-string-format';\nimport { PdfTextAlignment } from './../graphics/enum';\n/**\n * `PdfAnnotation` class represents the base class for annotation objects.\n * @private\n */\nvar PdfAnnotation = /** @class */ (function () {\n function PdfAnnotation(arg1) {\n // Fields\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * `Color` of the annotation\n * @private\n */\n this.pdfColor = new PdfColor(255, 255, 255);\n /**\n * `Bounds` of the annotation.\n * @private\n */\n this.rectangle = new RectangleF(0, 0, 0, 0);\n /**\n * Parent `page` of the annotation.\n * @private\n */\n this.pdfPage = null;\n /**\n * `Brush of the text` of the annotation.\n * @default new PdfSolidBrush(new PdfColor(0, 0, 0))\n * @private\n */\n this.textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n /**\n * `Font of the text` of the annotation.\n * @default new PdfStandardFont(PdfFontFamily.TimesRoman, 10)\n * @private\n */\n this.textFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 10);\n /**\n * `StringFormat of the text` of the annotation.\n * @default new PdfStringFormat(PdfTextAlignment.Left)\n * @private\n */\n this.format = new PdfStringFormat(PdfTextAlignment.Left);\n /**\n * `Text` of the annotation.\n * @private\n */\n this.content = '';\n /**\n * Internal variable to store `dictionary`.\n * @private\n */\n this.pdfDictionary = new PdfDictionary();\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n this.internalColor = new PdfColor();\n /**\n * `opacity or darkness` of the annotation.\n * @private\n * @default 1.0\n */\n this.darkness = 1.0;\n if (typeof arg1 === 'undefined') {\n this.initialize();\n }\n else {\n this.initialize();\n this.bounds = arg1;\n }\n }\n Object.defineProperty(PdfAnnotation.prototype, \"color\", {\n // Properties\n /**\n * `Color` of the annotation\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"innerColor\", {\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n get: function () {\n return this.internalColor;\n },\n set: function (value) {\n this.internalColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"bounds\", {\n /**\n * `bounds` of the annotation.\n * @private\n */\n get: function () {\n return this.rectangle;\n },\n set: function (value) {\n this.rectangle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"page\", {\n /**\n * Parent `page` of the annotation.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"font\", {\n /**\n * To specifying the `Font of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textFont;\n },\n set: function (value) {\n this.textFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"stringFormat\", {\n /**\n * To specifying the `StringFormat of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"brush\", {\n /**\n * To specifying the `Brush of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textBrush;\n },\n set: function (value) {\n this.textBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"text\", {\n /**\n * `Text` of the annotation.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n this.dictionary.items.setValue(this.dictionaryProperties.contents, new PdfString(this.content));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"dictionary\", {\n /**\n * Internal variable to store `dictionary`.\n * @hidden\n */\n get: function () {\n return this.pdfDictionary;\n },\n set: function (value) {\n this.pdfDictionary = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the annotation event handler and specifies the type of the annotation.\n * @private\n */\n PdfAnnotation.prototype.initialize = function () {\n this.pdfDictionary.annotationBeginSave = new SaveAnnotationEventHandler(this);\n this.pdfDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.annot));\n };\n /**\n * Sets related `page` of the annotation.\n * @private\n */\n PdfAnnotation.prototype.setPage = function (page) {\n this.pdfPage = page;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.p, new PdfReferenceHolder(this.pdfPage));\n };\n /**\n * Handles the `BeginSave` event of the Dictionary.\n * @private\n */\n PdfAnnotation.prototype.beginSave = function () {\n this.save();\n };\n /**\n * `Saves` an annotation.\n * @private\n */\n /* tslint:disable */\n PdfAnnotation.prototype.save = function () {\n var nativeRectangle = new RectangleF(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n var section = this.pdfPage.section;\n var initialHeight = nativeRectangle.height;\n var tempLoacation = section.pointToNativePdf(this.page, new PointF(nativeRectangle.x, nativeRectangle.y));\n nativeRectangle.x = tempLoacation.x;\n nativeRectangle.width = tempLoacation.x + nativeRectangle.width;\n nativeRectangle.y = (tempLoacation.y - this.page.document.pageSettings.margins.top);\n nativeRectangle.height = nativeRectangle.y - initialHeight;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.rect, PdfArray.fromRectangle(nativeRectangle));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(this.darkness));\n };\n Object.defineProperty(PdfAnnotation.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotation;\n}());\nexport { PdfAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { PdfAnnotation } from './annotation';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfLinkAnnotation` class represents the ink annotation class.\n * @private\n */\nvar PdfLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfLinkAnnotation, _super);\n function PdfLinkAnnotation(rectangle) {\n return _super.call(this, rectangle) || this;\n }\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfLinkAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n };\n return PdfLinkAnnotation;\n}(PdfAnnotation));\nexport { PdfLinkAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { PdfLinkAnnotation } from './link-annotation';\n/**\n * Represents base class for `link annotations` with associated action.\n * @private\n */\nvar PdfActionLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfActionLinkAnnotation, _super);\n // Constructors\n /**\n * Specifies the constructor for `ActionLinkAnnotation`.\n * @private\n */\n function PdfActionLinkAnnotation(rectangle) {\n var _this = _super.call(this, rectangle) || this;\n // Fields\n /**\n * Internal variable to store annotation's `action`.\n * @default null\n * @private\n */\n _this.pdfAction = null;\n return _this;\n }\n //Public method\n /**\n * get and set the `action`.\n * @hidden\n */\n PdfActionLinkAnnotation.prototype.getSetAction = function (value) {\n if (typeof value === 'undefined') {\n return this.pdfAction;\n }\n else {\n this.pdfAction = value;\n }\n };\n return PdfActionLinkAnnotation;\n}(PdfLinkAnnotation));\nexport { PdfActionLinkAnnotation };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfAction` class represents base class for all action types.\n * @private\n */\nvar PdfAction = /** @class */ (function () {\n // Constructors\n /**\n * Initialize instance for `Action` class.\n * @private\n */\n function PdfAction() {\n /**\n * Specifies the Next `action` to perform.\n * @private\n */\n this.action = null;\n /**\n * Specifies the Internal variable to store `dictionary properties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // super(); -> Object()\n this.initialize();\n }\n Object.defineProperty(PdfAction.prototype, \"next\", {\n // Properties\n /**\n * Gets and Sets the `Next` action to perform.\n * @private\n */\n get: function () {\n return this.action;\n },\n set: function (value) {\n // if (this.action !== value) {\n this.action = value;\n this.dictionary.items.setValue(this.dictionaryProperties.next, new PdfReferenceHolder(this.action));\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAction.prototype, \"dictionary\", {\n /**\n * Gets and Sets the instance of PdfDictionary class for `Dictionary`.\n * @private\n */\n get: function () {\n if (typeof this.pdfDictionary === 'undefined') {\n this.pdfDictionary = new PdfDictionary();\n }\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the action type.\n * @private\n */\n PdfAction.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.action));\n };\n Object.defineProperty(PdfAction.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` as IPdfPrimitive class.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAction;\n}());\nexport { PdfAction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { PdfAction } from './action';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfUriAction` class for initialize the uri related internals.\n * @private\n */\nvar PdfUriAction = /** @class */ (function (_super) {\n __extends(PdfUriAction, _super);\n function PdfUriAction(uri) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Specifies the `uri` string.\n * @default ''.\n * @private\n */\n _this.uniformResourceIdentifier = '';\n return _this;\n }\n Object.defineProperty(PdfUriAction.prototype, \"uri\", {\n // Properties\n /**\n * Gets and Sets the value of `Uri`.\n * @private\n */\n get: function () {\n return this.uniformResourceIdentifier;\n },\n set: function (value) {\n this.uniformResourceIdentifier = value;\n this.dictionary.items.setValue(this.dictionaryProperties.uri, new PdfString(this.uniformResourceIdentifier));\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the internals.\n * @private\n */\n PdfUriAction.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.s, new PdfName(this.dictionaryProperties.uri));\n };\n return PdfUriAction;\n}(PdfAction));\nexport { PdfUriAction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { PdfActionLinkAnnotation } from './action-link-annotation';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfUriAction } from './../actions/uri-action';\n/**\n * `PdfUriAnnotation` class represents the Uri annotation.\n * @private\n */\nvar PdfUriAnnotation = /** @class */ (function (_super) {\n __extends(PdfUriAnnotation, _super);\n function PdfUriAnnotation(rectangle, uri) {\n var _this = _super.call(this, rectangle) || this;\n if (typeof uri !== 'undefined') {\n _this.uri = uri;\n }\n return _this;\n }\n Object.defineProperty(PdfUriAnnotation.prototype, \"uriAction\", {\n /**\n * Get `action` of the annotation.\n * @private\n */\n get: function () {\n if (typeof this.pdfUriAction === 'undefined') {\n this.pdfUriAction = new PdfUriAction();\n }\n return this.pdfUriAction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"uri\", {\n // Properties\n /**\n * Gets or sets the `Uri` address.\n * @private\n */\n get: function () {\n return this.uriAction.uri;\n },\n set: function (value) {\n if (this.uriAction.uri !== value) {\n this.uriAction.uri = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"action\", {\n /**\n * Gets or sets the `action`.\n * @private\n */\n get: function () {\n return this.getSetAction();\n },\n set: function (value) {\n this.getSetAction(value);\n this.uriAction.next = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfUriAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n var tempPrimitive = this.uriAction.element;\n this.dictionary.items.setValue(this.dictionaryProperties.a, this.uriAction.element);\n };\n return PdfUriAnnotation;\n}(PdfActionLinkAnnotation));\nexport { PdfUriAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { PdfPage } from './../pages/pdf-page';\nimport { PointF, RectangleF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTextElement } from './../graphics/figures/text-element';\nimport { PdfUriAnnotation } from './uri-annotation';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfFontStyle } from './../graphics/fonts/enum';\nimport { PdfTextAlignment } from './../graphics/enum';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * `PdfTextWebLink` class represents the class for text web link annotation.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * //\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTextWebLink = /** @class */ (function (_super) {\n __extends(PdfTextWebLink, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfTextWebLink` class.\n * @private\n */\n function PdfTextWebLink() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Internal variable to store `Url`.\n * @default ''\n * @private\n */\n _this.uniformResourceLocator = '';\n /**\n * Internal variable to store `Uri Annotation` object.\n * @default null\n * @private\n */\n _this.uriAnnotation = null;\n /**\n * Checks whether the drawTextWebLink method with `PointF` overload is called or not.\n * If it set as true, then the start position of each lines excluding firest line is changed as (0, Y).\n * @private\n * @hidden\n */\n _this.recalculateBounds = false;\n _this.defaultBorder = new PdfArray();\n for (var i = 0; i < 3; i++) {\n _this.defaultBorder.add(new PdfNumber(0));\n }\n return _this;\n }\n Object.defineProperty(PdfTextWebLink.prototype, \"url\", {\n // Properties\n /**\n * Gets or sets the `Uri address`.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * //\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.uniformResourceLocator;\n },\n set: function (value) {\n if (value.length === 0) {\n throw new Error('ArgumentException : Url - string can not be empty');\n }\n this.uniformResourceLocator = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfTextWebLink.prototype.draw = function (arg1, arg2) {\n if (arg1 instanceof PdfPage) {\n var layout = new PdfStringLayouter();\n var previousFontStyle = this.font.style;\n if (arg2 instanceof PointF) {\n this.recalculateBounds = true;\n this.font.style = PdfFontStyle.Underline;\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg1.graphics.clientSize.width - arg2.x), 0), true, arg1.graphics.clientSize);\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(arg2, textSize);\n rect = this.calculateBounds(rect, textSize.width, arg1.graphics.clientSize.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var result = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n else {\n var result = this.drawMultipleLineWithPoint(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg2.width, 0), false, new SizeF(0, 0));\n this.font.style = PdfFontStyle.Underline;\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(new PointF(arg2.x, arg2.y), textSize);\n rect = this.calculateBounds(rect, textSize.width, arg2.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var returnValue = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n else {\n var returnValue = this.drawMultipleLineWithBounds(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n }\n }\n else {\n var page = new PdfPage();\n page = arg1.page;\n return this.draw(page, arg2);\n }\n };\n /* tslint:enable */\n //Private methods\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified location.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithPoint = function (result, page, location) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var bounds = new RectangleF(location, size);\n if (i !== 0) {\n bounds.x = 0;\n }\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(0, 0, page.graphics.clientSize.width, size.height);\n location.y = 0;\n }\n else {\n break;\n }\n }\n bounds = this.calculateBounds(bounds, size.width, page.graphics.clientSize.width, bounds.x);\n this.uriAnnotation = new PdfUriAnnotation(bounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n if (i !== 0) {\n layoutResult = this.drawText(page, new PointF(0, bounds.y));\n }\n else {\n layoutResult = this.drawText(page, bounds.x, bounds.y);\n }\n location.y += size.height;\n }\n return layoutResult;\n };\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified bounds.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithBounds = function (result, page, bounds) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var internalBounds = new RectangleF(new PointF(bounds.x, bounds.y), size);\n internalBounds = this.calculateBounds(internalBounds, size.width, bounds.width, bounds.x);\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(bounds.x, 0, bounds.width, size.height);\n internalBounds.y = 0;\n }\n else {\n break;\n }\n }\n this.uriAnnotation = new PdfUriAnnotation(internalBounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n layoutResult = this.drawText(page, bounds);\n bounds.y += size.height;\n }\n return layoutResult;\n };\n /* tslint:disable */\n PdfTextWebLink.prototype.calculateBounds = function (currentBounds, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth);\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n currentBounds.x = startPosition;\n currentBounds.width = maximumWidth;\n }\n else {\n currentBounds.width = startPosition;\n currentBounds.width = lineWidth;\n }\n return currentBounds;\n };\n return PdfTextWebLink;\n}(PdfTextElement));\nexport { PdfTextWebLink };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { PdfGrid } from '../pdf-grid';\nimport { PdfStringFormat } from './../../../graphics/fonts/pdf-string-format';\nimport { SizeF, RectangleF, PointF } from './../../../drawing/pdf-drawing';\nimport { PdfBorders } from '../styles/pdf-borders';\nimport { PdfLayoutType, PdfLayoutBreakType } from './../../../graphics/figures/enum';\nimport { PdfLayoutResult, PdfLayoutFormat, ElementLayouter } from './../../../graphics/figures/base/element-layouter';\nimport { PdfHorizontalOverflowType } from '../styles/style';\nimport { TemporaryDictionary } from './../../../collections/object-object-pair/dictionary';\nimport { PdfStringLayouter } from './../../../graphics/fonts/string-layouter';\nimport { PdfDocument } from './../../../document/pdf-document';\n/**\n * Class `lay outing the text`.\n *\n */\nvar PdfGridLayouter = /** @class */ (function (_super) {\n __extends(PdfGridLayouter, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGridLayouter(baseFormat) {\n var _this = _super.call(this, baseFormat) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridInitialWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n _this.childheight = 0;\n /**\n * Check weather it is `child grid or not`.\n * @private\n */\n _this.isChildGrid = false;\n /**\n * @hidden\n * @private\n */\n _this.hasRowSpanSpan = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.flag = true;\n /**\n * @hidden\n * @private\n */\n _this.columnRanges = [];\n /**\n * @hidden\n * @private\n */\n _this.currentLocation = new PointF(0, 0);\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.slr = null;\n _this.remainderText = null;\n _this.isPaginate = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n _this.isOverloadWithPosition = false;\n return _this;\n }\n Object.defineProperty(PdfGridLayouter.prototype, \"Grid\", {\n //Properties\n get: function () {\n return this.elements;\n },\n enumerable: true,\n configurable: true\n });\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n //Public methods\n /**\n * `Layouts` the text.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /*public layout(graphics : PdfLayoutParams) : PdfLayoutResult\n public layout(graphics : PdfGraphics, bounds : RectangleF) : void\n public layout(graphics : PdfGraphics, bounds : PointF) : void\n public layout(graphics ?: PdfGraphics | PdfLayoutParams, bounds ?: PointF | RectangleF) : void | PdfLayoutResult {\n if (graphics instanceof PdfGraphics) {\n if (bounds instanceof PointF) {\n if (bounds.x === 0) {\n bounds.x = PdfBorders.default.right.width / 2;\n }\n if (bounds.y === 0) {\n bounds.y = PdfBorders.default.top.width / 2;\n }\n let boundaries : RectangleF = new RectangleF(bounds, new SizeF(0, 0));\n this.layout(graphics, boundaries);\n } else {\n let width : number = graphics.clientSize.width;\n let parameter : PdfLayoutParams = new PdfLayoutParams();\n parameter.bounds = bounds;\n this.currentGraphics = graphics;\n if (graphics.layer != null) {\n let index : number = 0;\n if (this.currentGraphics.page instanceof PdfPage) {\n index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n } else {\n index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n }\n } else {\n this.layoutInternal(parameter);\n }\n }\n }\n }*/\n /**\n * Gets the `format`.\n * @private\n */\n PdfGridLayouter.prototype.getFormat = function (format) {\n var f = format;\n return f;\n };\n /**\n * `Layouts` the element.\n * @private\n */\n PdfGridLayouter.prototype.layoutInternal = function (param) {\n var format = this.getFormat(param.format);\n this.gridLayoutFormat = this.getFormat(param.format);\n this.currentPage = param.page;\n if (this.currentPage !== null) {\n var pageHeight = this.currentPage.getClientSize().height;\n var pageWidth = this.currentPage.getClientSize().width;\n this.currentPageBounds = this.currentPage.getClientSize();\n }\n else {\n throw Error('Can not set page as null');\n //this.currentPageBounds = this.currentGraphics.clientSize;\n }\n this.currentGraphics = this.currentPage.graphics;\n //this.currentGraphics = (this.currentPage != null ) ? this.currentPage.graphics : this.currentGraphics;\n // if (this.currentGraphics.layer !== null) {\n // let index : number = 0;\n // if (this.currentGraphics.page instanceof PdfPage) {\n // index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n // } else {\n // index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n // }\n // this.listOfNavigatePages.push(index);\n // }\n var index = 0;\n index = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n this.listOfNavigatePages.push(index);\n if (format != null && format.break === PdfLayoutBreakType.FitColumnsToPage) {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), new SizeF(this.Grid.columns.width, this.currentGraphics.clientSize.height));\n }\n else {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n }\n //this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n if (this.Grid.rows.count !== 0) {\n this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width :\n (this.currentBounds.width - this.Grid.rows.getRow(0).cells.getCell(0).style.borders.left.width / 2);\n }\n else if (this.Grid.headers.count !== 0) {\n // this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width : (this.currentBounds.width -\n // this.Grid.headers.getHeader(0).cells.getCell(0).style.borders.left.width / 2);\n this.currentBounds.width = param.bounds.width;\n }\n else {\n throw Error('Please add row or header into grid');\n }\n this.startLocation = new PointF(param.bounds.x, param.bounds.y);\n // if (this.Grid.style.allowHorizontalOverflow && this.currentBounds.width > this.currentGraphics.clientSize.width) {\n // this.currentBounds.width = this.currentGraphics.clientSize.width;\n // this.currentBounds.width -= this.currentBounds.x;\n // }\n // if (this.Grid.isChildGrid) {\n // this.childheight = param.bounds.height;\n // }\n // if (param.format !== null && param.format.usePaginateBounds) {\n // if (param.format.paginateBounds.height > 0) {\n // this.currentBounds.height = param.format.paginateBounds.height;\n // }\n //} else \n if (param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (!this.Grid.isChildGrid) {\n this.hType = this.Grid.style.horizontalOverflowType;\n }\n if (!this.Grid.style.allowHorizontalOverflow) {\n this.columnRanges = [];\n if (typeof this.Grid.isChildGrid !== 'undefined' && typeof this.Grid.isChildGrid) {\n this.Grid.measureColumnsWidth(this.currentBounds);\n }\n else {\n this.Grid.measureColumnsWidth(new RectangleF(this.currentBounds.x, this.currentBounds.y, this.currentBounds.x + this.currentBounds.width, this.currentBounds.height));\n }\n this.columnRanges.push([0, this.Grid.columns.count - 1]);\n }\n else {\n this.Grid.measureColumnsWidth();\n this.determineColumnDrawRanges();\n }\n if (this.Grid.hasRowSpanSpan) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n if (this.Grid.rows.getRow(i).height !== -1 && !this.Grid.rows.getRow(i).isRowHeightSet) {\n this.Grid.rows.getRow(i).isRowHeightSet = true;\n }\n }\n }\n var result = this.layoutOnPage(param);\n return result;\n };\n // /* tslint:enable */\n /**\n * `Determines the column draw ranges`.\n * @private\n */\n PdfGridLayouter.prototype.determineColumnDrawRanges = function () {\n var startColumn = 0;\n var endColumn = 0;\n var cellWidths = 0;\n var availableWidth = this.currentGraphics.clientSize.width - this.currentBounds.x;\n for (var i = 0; i < this.Grid.columns.count; i++) {\n cellWidths += this.Grid.columns.getColumn(i).width;\n if (cellWidths >= availableWidth) {\n var subWidths = 0;\n for (var j = startColumn; j <= i; j++) {\n subWidths += this.Grid.columns.getColumn(j).width;\n if (subWidths > availableWidth) {\n break;\n }\n endColumn = j;\n }\n this.columnRanges.push([startColumn, endColumn]);\n startColumn = endColumn + 1;\n endColumn = startColumn;\n cellWidths = (endColumn <= i) ? this.Grid.columns.getColumn(i).width : 0;\n }\n }\n // if (startColumn !== this.columns.Count) {\n this.columnRanges.push([startColumn, this.Grid.columns.count - 1]);\n // }\n };\n /**\n * `Layouts the on page`.\n * @private\n */\n PdfGridLayouter.prototype.layoutOnPage = function (param) {\n /* tslint:disable */\n this.pageBounds.x = param.bounds.x;\n this.pageBounds.y = param.bounds.y;\n this.pageBounds.height = param.bounds.height;\n var format = this.getFormat(param.format);\n var endArgs = null;\n var result = null;\n var layoutedPages = new TemporaryDictionary();\n var startPage = param.page;\n var isParentCell = false;\n var cellBounds = [];\n for (var index = 0; index < this.columnRanges.length; index++) {\n var range = this.columnRanges[index];\n this.cellStartIndex = range[0];\n this.cellEndIndex = range[1];\n var returnObject = this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex);\n this.currentBounds = returnObject.currentBounds;\n this.currentRowIndex = returnObject.currentRowIndex;\n // if (returnObject.returnValue) {\n // result = new PdfGridLayoutResult(this.currentPage, this.currentBounds);\n // break;\n // }\n //Draw Headers.\n var drawHeader = void 0;\n for (var i_1 = 0; i_1 < this.Grid.headers.count; i_1++) {\n var row = this.Grid.headers.getHeader(i_1);\n var headerHeight = this.currentBounds.y;\n this.isHeader = true;\n if (startPage != this.currentPage) {\n for (var k = this.cellStartIndex; k <= this.cellEndIndex; k++) {\n if (row.cells.getCell(k).isCellMergeContinue) {\n row.cells.getCell(k).isCellMergeContinue = false;\n row.cells.getCell(k).value = \"\";\n }\n }\n }\n // RowLayoutResult\n var headerResult = this.drawRow(row);\n if (headerHeight === this.currentBounds.y) {\n drawHeader = true;\n if (PdfGridLayouter.repeatRowIndex === -1) {\n PdfGridLayouter.repeatRowIndex = i_1;\n }\n }\n else {\n drawHeader = false;\n }\n if (!headerResult.isFinish && startPage !== null\n && format.layout !== PdfLayoutType.OnePage && drawHeader) {\n this.startLocation.x = this.currentBounds.x;\n this.currentPage = this.getNextPageformat(format);\n this.startLocation.y = this.currentBounds.y;\n if (typeof format.paginateBounds !== 'undefined' && format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 && format.paginateBounds.height === 0)\n this.currentBounds.x += this.startLocation.x;\n this.drawRow(row);\n }\n this.isHeader = false;\n }\n var i = 0;\n var length_1 = this.Grid.rows.count;\n var repeatRow = void 0;\n var startingHeight = 0;\n var flag = true;\n //Here is to draw parent Grid and Cells\n cellBounds = [];\n //Draw row by row with the specified cell range.\n for (var j = 0; j < this.Grid.rows.count; j++) {\n var row = this.Grid.rows.getRow(j);\n i++;\n this.currentRowIndex = i - 1;\n var originalHeight = this.currentBounds.y;\n startPage = this.currentPage;\n PdfGridLayouter.repeatRowIndex = -1;\n if (flag && row.grid.isChildGrid) {\n startingHeight = originalHeight;\n flag = false;\n }\n var rowResult = null;\n ///rowResult = this.drawRow(row);\n /*if(!row.isrowFinish) {\n if(!row.grid.isgridSplit){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n } else {\n if(!row.isrowDraw){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n row.grid.isgridSplit = false;\n } else {\n rowResult = null;\n break;\n }\n }\n }\n else {\n //row.isrowFinish = false;\n //rowResult = this.drawRow(row);\n rowResult = null;\n break;\n \n } */\n if (this.Grid.splitChildRowIndex == -1) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else {\n if (row.grid.ParentCell.row.grid.isGridSplit && this.Grid.splitChildRowIndex <= row.rowIndex) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else if (row.isrowFinish) {\n continue;\n }\n else {\n break;\n }\n }\n //rowResult = this.drawRow(row);\n cellBounds.push(rowResult.bounds.width);\n /*if (row.isRowBreaksNextPage)\n {\n let x : number = 0;\n for (let l : number = 0; l < row.cells.count; l++)\n {\n let isNestedRowBreak : boolean = false;\n if (row.height == row.cells.getCell(l).height)\n {\n let n : number;\n let grid : PdfGrid = row.cells.getCell(l).value as PdfGrid;\n for (let m : number = grid.rows.count; 0 < m; m--)\n {\n if ((grid.rows.getRow(m - 1).rowBreakHeight > 0))\n {\n isNestedRowBreak = true;\n break;\n }\n if (grid.rows.getRow(m - 1).isRowBreaksNextPage)\n {\n row.rowBreakHeightValue = grid.rows.getRow(m - 1).rowBreakHeightValue;\n break;\n }\n row.rowBreakHeightValue += grid.rows.getRow(m - 1).height;\n }\n }\n if (isNestedRowBreak)\n break;\n }\n for (let j : number = 0; j < row.cells.count; j++)\n {\n\n if (row.height > row.cells.getCell(j).height)\n {\n row.cells.getCell(j).value = \" \";\n let rect : RectangleF ;\n let page : PdfPage = this.getNextPage(this.currentPage);\n let section : PdfSection = this.currentPage.section;\n let index : number = section.indexOf(page);\n for (let k : number = 0; k < (section.count - 1) - index; k++)\n {\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, page.getClientSize().height);\n PdfGridLayouter.repeatRowIndex = -1;\n row.cells.getCell(j).draw(page.graphics, rect, false);\n page = this.getNextPage(page);\n }\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, row.rowBreakHeightValue);\n\n row.cells.getCell(j).draw(page.graphics, rect, false);\n }\n x += row.grid.columns.getColumn(j).width;\n }\n }*/\n //if height remains same, it is understood that row is not drawn in the page\n if (originalHeight === this.currentBounds.y) {\n repeatRow = true;\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n else {\n repeatRow = false;\n PdfGridLayouter.repeatRowIndex = -1;\n }\n while (!rowResult.isFinish && startPage != null) {\n var tempResult = this.getLayoutResult();\n /*if (startPage != this.currentPage)\n {\n if (row.grid.isChildGrid && row.grid.ParentCell != null)\n {\n let bounds : RectangleF= new RectangleF(new PointF(format.paginateBounds.x,format.paginateBounds.y), new SizeF(param.bounds.width, tempResult.bounds.height));\n bounds.x += param.bounds.x;\n if (row.grid.ParentCell.row.grid.style.cellPadding != null)\n {\n bounds.y += row.grid.ParentCell.row.grid.style.cellPadding.top;\n if (bounds.height > this.currentPageBounds.height)\n {\n bounds.height = this.currentPageBounds.height - bounds.y;\n bounds.height -= (row.grid.ParentCell.row.grid.style.cellPadding.bottom);\n }\n }\n // Draw border for cells in the nested grid cell's row.\n for (let c : number = 0; c < row.cells.count; c++)\n {\n let cell : PdfGridCell = row.cells.getCell(c);\n let cellWidth : number= 0;\n if (cell.columnSpan > 1)\n {\n for (; c < cell.columnSpan; c++)\n cellWidth += row.grid.columns.getColumn(c).width;\n }\n else\n cellWidth = Math.max(cell.width, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(this.currentGraphics, new RectangleF(new PointF(bounds.x,bounds.y), new SizeF(cellWidth, bounds.height)));\n bounds.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n }\n */\n endArgs = this.raisePageLayouted(tempResult);\n if (endArgs.cancel || repeatRow)\n break;\n else if (this.Grid.allowRowBreakAcrossPages) {\n //If there is no space in the current page, add new page and then draw the remaining row.\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n var location_1 = new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n if ((format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 &&\n format.paginateBounds.height === 0) && (this.startLocation.x === location_1.x && this.startLocation.y === location_1.y)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n }\n if (this.isPaginate) {\n this.startLocation.y = this.currentBounds.y;\n this.isPaginate = false;\n }\n if (this.Grid.isChildGrid && row.grid.ParentCell != null) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n if (row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top < this.currentBounds.height) {\n this.currentBounds.y = this.Grid.ParentCell.row.grid.style.cellPadding.top;\n }\n }\n }\n if (row.grid.ParentCell != null) {\n row.grid.ParentCell.row.isRowBreaksNextPage = true;\n row.grid.ParentCell.row.rowBreakHeightValue = row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top + this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n for (var i_2 = row.rowIndex + 1; i_2 < row.grid.rows.count; i_2++) {\n row.grid.ParentCell.row.rowBreakHeightValue += row.grid.rows.getRow(i_2).height;\n }\n //row.rowBreakHeight = row.grid.ParentCell.row.rowBreakHeightValue;\n }\n /*if (row.noOfPageCount > 1)\n {\n let temp : number = row.rowBreakHeightValue;\n for (let j : number = 1; j < row.noOfPageCount; j++)\n {\n row.rowBreakHeightValue = 0;\n row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n this.currentPage = this.getNextPageformat(format);\n startPage = this.currentPage;\n }\n row.rowBreakHeightValue = temp;\n row.noOfPageCount = 1;\n rowResult = this.drawRow(row);\n } else {\n rowResult = this.drawRow(row);\n }\n /*if(row.grid.isChildGrid){\n row.isrowFinish = false;\n row.isrowDraw = false;\n row.grid.isgridSplit = true;\n row.grid.ParentCell.row.grid.isgridSplit = true;\n //rowResult.isFinish = false;\n break;\n }*/\n if (row.grid.isChildGrid) {\n //row.grid.isgridSplit = true;\n row.isrowFinish = false;\n //row.grid.ParentCell.row.grid.isgridSplit = true;\n row.grid.splitChildRowIndex = row.rowIndex;\n row.grid.ParentCell.row.grid.splitChildRowIndex = row.grid.ParentCell.row.rowIndex;\n if (row.grid.ParentCell.row.grid.isGridSplit) {\n row.grid.ParentCell.row.noOfPageCount += 1;\n row.grid.ParentCell.row.grid.isGridSplit = false;\n }\n break;\n }\n if (row.noOfPageCount < 1) {\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n if (row.style.border != null && ((row.style.border.left != null && row.style.border.left.width !== 1)\n || (row.style.border.top != null && row.style.border.top.width !== 1))) {\n var x = row.style.border.left.width / 2;\n var y = row.style.border.top.width / 2;\n if (this.currentBounds.x === PdfBorders.default.right.width / 2 && this.currentBounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.currentBounds.width, this.currentBounds.height);\n this.currentBounds = newBound;\n }\n }\n if (this.Grid.repeatHeader) {\n for (var j_1 = 0; j_1 < this.Grid.headers.count; j_1++) {\n var headerRepeat = this.Grid.headers.getHeader(j_1);\n this.drawRow(headerRepeat);\n }\n }\n rowResult = this.drawRow(row);\n if (row.noOfPageCount >= 1) {\n var temp = row.rowBreakHeightValue;\n for (var j_2 = 0; j_2 < row.noOfPageCount; j_2++) {\n //this.currentPage.section.add();\n var tempResult1 = this.getLayoutResult();\n endArgs = this.raisePageLayouted(tempResult1);\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n //row.rowBreakHeightValue = 0;\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n this.currentBounds.y = 0.5;\n if (this.Grid.repeatHeader) {\n for (var i_3 = 0; i_3 < this.Grid.headers.count; i_3++) {\n var header = this.Grid.headers.getHeader(i_3);\n this.drawRow(header);\n }\n }\n //row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n }\n // row.rowBreakHeight = temp;\n // row.noOfPageCount = 1;\n // rowResult = this.drawRow(row);\n }\n row.grid.splitChildRowIndex = -1;\n row.grid.isGridSplit = false;\n rowResult.isFinish = this.checkIsFisished(row);\n //row.NestedGridLayoutResult.bounds.height = row.rowBreakHeightValue;\n //this.currentBounds.y = rowResult.bounds.y;\n for (var i_4 = 0; i_4 < row.cells.count; i_4++) {\n if (row.cells.getCell(i_4).value instanceof PdfGrid) {\n row.cells.getCell(i_4).value.splitChildRowIndex = -1;\n }\n }\n }\n }\n // else if (!this.Grid.allowRowBreakAcrossPages && i < length)\n // {\n // this.currentPage = this.getNextPageformat(format);\n // break;\n // }\n // else if (i >= length)\n // break;\n }\n if (!rowResult.isFinish && startPage !== null && format.layout !== PdfLayoutType.OnePage && repeatRow) {\n // During pagination, cell position is maintained here.\n this.startLocation.x = this.currentBounds.x;\n var isAddNextPage = false;\n this.currentPage = this.getNextPageformat(format);\n /*if (!this.Grid.isSingleGrid)\n {\n for ( let j : number= 0; j < this.Grid.rows.count; j++)\n {\n let isWidthGreaterthanParent : boolean = false;\n for (let k : number = 0; k < this.Grid.rows.getRow(j).cells.count; k++)\n {\n if (this.Grid.rows.getRow(j).cells.getCell(k).width > this.currentPageBounds.width)\n isWidthGreaterthanParent = true;\n }\n if (isWidthGreaterthanParent && this.Grid.rows.getRow(j).cells.getCell(this.rowBreakPageHeightCellIndex).pageCount > 0)\n {\n isAddNextPage = true;\n }\n }\n }\n if (!this.Grid.isRearranged && isAddNextPage)\n {\n let section : PdfSection = this.currentPage.section;\n \n //this.currentPage = section.add();\n \n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0,0), this.currentPage.getClientSize());\n \n let pageindex : number = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n }\n else\n {\n this.currentPage = this.getNextPageformat(format);\n }\n if (format.paginateBounds.y == 0)\n this.currentBounds.y = PdfBorders.default.top.width/2;\n else\n {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n \n }*/\n if (this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex).returnValue) {\n break;\n }\n if ((param.format !== null) && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (typeof param.format !== 'undefined' && param.format != null && typeof param.format.usePaginateBounds !== 'undefined' && !param.format.usePaginateBounds && !(param.format.paginateBounds.x === 0 && param.format.paginateBounds.y === 0 && param.format.paginateBounds.width === 0 && param.format.paginateBounds.height === 0) && param.format.paginateBounds.y === 0) {\n this.currentBounds.y = PdfBorders.default.top.width / 2;\n }\n else {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n if (format != null && (format.paginateBounds.x !== 0 || format.paginateBounds.y !== 0 || format.paginateBounds.height !== 0 || format.paginateBounds.width !== 0)) {\n this.currentBounds.x = format.paginateBounds.x;\n this.currentBounds.width = format.paginateBounds.width;\n this.currentBounds.height = format.paginateBounds.height;\n }\n }\n if (typeof param.format !== 'undefined' && (param.format !== null) && typeof param.format.usePaginateBounds !== 'undefined' && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.y > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.y = param.bounds.y;\n }\n this.startLocation.y = this.currentBounds.y;\n if ((format.paginateBounds.x === format.paginateBounds.y) &&\n (format.paginateBounds.y === format.paginateBounds.height) &&\n (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n }\n if (this.currentBounds.x === PdfBorders.default.left.width / 2) {\n this.currentBounds.y += this.startLocation.x;\n }\n if (this.Grid.repeatHeader) {\n for (var i_5 = 0; i_5 < this.Grid.headers.count; i_5++) {\n var header = this.Grid.headers.getHeader(i_5);\n this.drawRow(header);\n }\n }\n this.drawRow(row);\n if (this.currentPage !== null && !layoutedPages.containsKey(this.currentPage)) {\n layoutedPages.add(this.currentPage, range);\n }\n }\n if (row.NestedGridLayoutResult != null) {\n // Position for next row in the grid.\n this.currentPage = row.NestedGridLayoutResult.page;\n this.currentGraphics = this.currentPage.graphics; //If not, next row will not be drawn in the layouted page.\n this.startLocation = new PointF(row.NestedGridLayoutResult.bounds.x, row.NestedGridLayoutResult.bounds.y);\n var recalHeight = this.ReCalculateHeight(row, row.NestedGridLayoutResult.bounds.height);\n this.currentBounds.y = recalHeight;\n //this.currentBounds.y = row.NestedGridLayoutResult.bounds.height;\n if (startPage != this.currentPage) {\n var secion = this.currentPage.section;\n var startIndex = secion.indexOf(startPage) + 1;\n var endIndex = secion.indexOf(this.currentPage);\n for (var page = startIndex; page < endIndex + 1; page++) {\n var pageGraphics = this.currentPage.graphics;\n var location_2 = new PointF(format.paginateBounds.x, format.paginateBounds.y);\n var height = page == endIndex ? (row.NestedGridLayoutResult.bounds.height - param.bounds.y) :\n (this.currentBounds.height - location_2.y);\n if (height <= pageGraphics.clientSize.height)\n height += param.bounds.y;\n // if (row.grid.isChildGrid && row.grid.ParentCell != null)\n // location.x += param.bounds.x;\n location_2.y = format == null ? 0.5 : format.paginateBounds.y;\n // Draw border for last paginated row containing nested grid.\n for (var c = 0; c < row.cells.count; c++) {\n var cell = row.cells.getCell(c);\n var cellWidth = 0;\n var totalwidth = 0;\n if (cell.value instanceof PdfGrid) {\n for (var i_6 = 0; i_6 < cell.value.columns.count; i_6++) {\n totalwidth += cell.value.columns.getColumn(i_6).columnWidth;\n }\n }\n else {\n totalwidth = cell.width;\n }\n // if (cell.columnSpan > 1)\n // {\n // for (; c < cell.columnSpan; c++)\n // cellWidth += row.grid.columns.getColumn(c).width;\n // }\n // else\n cellWidth = Math.max(totalwidth, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(cellWidth, height)));\n location_2.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n // So, nested grid drawing is completed for the current row. Update page.\n // Otherwise, the next nested grid of the parent will draw borders from start.\n startPage = this.currentPage;\n }\n }\n }\n var isPdfGrid = false;\n var maximumCellBoundsWidth = 0;\n if (cellBounds.length > 0) {\n maximumCellBoundsWidth = cellBounds[0];\n }\n var largeNavigatePage = [[1, 2]];\n for (var c = 0; c < this.Grid.rows.count; c++) {\n if (this.cellEndIndex != -1 && this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value instanceof PdfGrid) {\n var grid = this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value;\n this.rowLayoutBoundsWidth = grid.rowLayoutBoundsWidth;\n isPdfGrid = true;\n // if (largeNavigatePage[0][0] < grid.listOfNavigatePages.length)\n // {\n // largeNavigatePage[0][0] = grid.listOfNavigatePages.length;\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n // else if ((largeNavigatePage[0][0] == grid.listOfNavigatePages.length) && (largeNavigatePage[0][1] < cellBounds[c]))\n // {\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n }\n }\n if (!isPdfGrid && cellBounds.length > 0) {\n for (var c = 0; c < i - 1; c++) {\n if (maximumCellBoundsWidth < cellBounds[c]) {\n maximumCellBoundsWidth = cellBounds[c];\n }\n }\n this.rowLayoutBoundsWidth = maximumCellBoundsWidth;\n }\n else {\n this.rowLayoutBoundsWidth = largeNavigatePage[0][1];\n }\n if (this.columnRanges.indexOf(range) < this.columnRanges.length - 1\n && startPage != null && format.layout != PdfLayoutType.OnePage) {\n isParentCell = this.Grid.isChildGrid;\n if (largeNavigatePage[0][0] != 0) {\n var section = this.currentPage.section;\n var pageIndex = section.indexOf(this.currentPage);\n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0, 0), this.currentPage.getClientSize());\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n }\n else {\n this.currentPage = this.getNextPageformat(format);\n }\n // let locationGrid : PointF= new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n // if (format.paginateBounds == new RectangleF(0,0,0,0) && this.startLocation == locationGrid)\n // {\n // this.currentBounds.x += this.startLocation.x;\n // this.currentBounds.y += this.startLocation.y;\n // }\n }\n if (this.columnRanges.length - 1 !== index && this.columnRanges.length > 1 && format.layout !== PdfLayoutType.OnePage) {\n this.currentPage = this.getNextPageformat(format);\n if ((format.paginateBounds.x === format.paginateBounds.y) && (format.paginateBounds.y === format.paginateBounds.height)\n && (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n //this.currentBounds.height = this.pageBounds.height;\n }\n }\n }\n result = this.getLayoutResult();\n if (this.Grid.style.allowHorizontalOverflow && this.Grid.style.horizontalOverflowType == PdfHorizontalOverflowType.NextPage) {\n this.reArrangePages(layoutedPages);\n }\n this.raisePageLayouted(result);\n return result;\n };\n PdfGridLayouter.prototype.checkIsFisished = function (row) {\n var result = true;\n for (var i = 0; i < row.cells.count; i++) {\n if (!row.cells.getCell(i).FinishedDrawingCell) {\n result = false;\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGridLayouter.prototype.getNextPageformat = function (format) {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n this.flag = false;\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n this.currentGraphics = nextPage.graphics;\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n if (!(this.listOfNavigatePages.indexOf(pageindex) !== -1)) {\n this.listOfNavigatePages.push(pageindex);\n }\n this.currentBounds = new RectangleF(new PointF(0, 0), nextPage.getClientSize());\n if ((typeof format !== 'undefined') && format != null && format.usePaginateBounds && (typeof format.paginateBounds !== 'undefined') && format.paginateBounds != null && (format.paginateBounds.x !== format.paginateBounds.y) && (format.paginateBounds.y !== format.paginateBounds.height)\n && (format.paginateBounds.height !== format.paginateBounds.width) && (format.paginateBounds.width !== 0)) {\n this.currentBounds.x = format.paginateBounds.x;\n this.currentBounds.y = format.paginateBounds.y;\n this.currentBounds.height = format.paginateBounds.height;\n }\n return nextPage;\n };\n PdfGridLayouter.prototype.CheckIfDefaultFormat = function (format) {\n var defaultFormat = new PdfStringFormat();\n return (format.alignment === defaultFormat.alignment && format.characterSpacing === defaultFormat.characterSpacing &&\n format.clipPath === defaultFormat.clipPath && format.firstLineIndent === defaultFormat.firstLineIndent &&\n format.horizontalScalingFactor === defaultFormat.horizontalScalingFactor &&\n format.lineAlignment === defaultFormat.lineAlignment\n && format.lineLimit === defaultFormat.lineLimit && format.lineSpacing === defaultFormat.lineSpacing &&\n format.measureTrailingSpaces === defaultFormat.measureTrailingSpaces && format.noClip === defaultFormat.noClip &&\n format.paragraphIndent === defaultFormat.paragraphIndent && format.rightToLeft === defaultFormat.rightToLeft &&\n format.subSuperScript === defaultFormat.subSuperScript && format.wordSpacing === defaultFormat.wordSpacing &&\n format.wordWrap === defaultFormat.wordWrap);\n };\n /**\n * `Raises BeforeCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.RaiseBeforeCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, style) {\n var args = null;\n if (this.Grid.raiseBeginCellDraw) {\n args = new PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style);\n this.Grid.onBeginCellDraw(args);\n style = args.style;\n }\n return style;\n };\n /**\n * `Raises AfterCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseAfterCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, cellstyle) {\n var args = null;\n if (this.Grid.raiseEndCellDraw) {\n args = new PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, cellstyle);\n this.Grid.onEndCellDraw(args);\n }\n };\n PdfGridLayouter.prototype.reArrangePages = function (layoutedPages) {\n var document = this.currentPage.document;\n var pages = [];\n var keys = layoutedPages.keys();\n var values = layoutedPages.values();\n for (var i = 0; i < keys.length; i++) {\n var page = keys[i];\n page.section = null;\n pages.push(page);\n document.pages.remove(page);\n }\n /* tslint:disable */\n for (var i = 0; i < layoutedPages.size(); i++) {\n var count = 0;\n for (var j = i, count_1 = (layoutedPages.size() / this.columnRanges.length); j < layoutedPages.size(); j += count_1) {\n var page = pages[j];\n if (typeof page !== 'undefined' && document.pages.indexOf(page) === -1) {\n document.pages.add(page);\n }\n }\n }\n /* tslint:enable */\n };\n /**\n * Gets the `layout result`.\n * @private\n */\n PdfGridLayouter.prototype.getLayoutResult = function () {\n if (this.Grid.isChildGrid && this.Grid.allowRowBreakAcrossPages) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n var row = this.Grid.rows.getRow(i);\n if (row.rowBreakHeight > 0 && row.repeatFlag) {\n this.startLocation.y = this.currentPage.origin.y;\n }\n }\n }\n var bounds;\n if (!this.isChanged) {\n bounds = new RectangleF(this.startLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n this.startLocation.y));\n }\n // else {\n // bounds = new RectangleF(this.currentLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n // this.currentLocation.y));\n // }\n /* tslint:enable */\n return new PdfGridLayoutResult(this.currentPage, bounds);\n };\n /**\n * `Recalculate row height` for the split cell to be drawn.\n * @private\n */\n PdfGridLayouter.prototype.ReCalculateHeight = function (row, height) {\n var newHeight = 0.0;\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n if (!(row.cells.getCell(i).remainingString === null || row.cells.getCell(i).remainingString === '' ||\n typeof row.cells.getCell(i).remainingString === 'undefined')) {\n newHeight = Math.max(newHeight, row.cells.getCell(i).measureHeight());\n }\n }\n return Math.max(height, newHeight);\n };\n /**\n * `Raises BeforePageLayout event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseBeforePageLayout = function (currentPage, currentBounds, currentRow) {\n var cancel = false;\n if (this.Grid.raiseBeginPageLayout) {\n var args = new PdfGridBeginPageLayoutEventArgs(currentBounds, currentPage, currentRow);\n this.Grid.onBeginPageLayout(args);\n // if (currentBounds !== args.Bounds) {\n // this.isChanged = true;\n // this.currentLocation = new PointF(args.Bounds.x, args.Bounds.y);\n // this.measureColumnsWidth(new RectangleF(new PointF(args.Bounds.x, args.Bounds.y) ,\n // new SizeF(args.Bounds.width + args.Bounds.x ,\n // args.Bounds.height)));\n // }\n cancel = (typeof args.cancel === 'undefined' ? false : args.cancel);\n currentBounds = args.bounds;\n currentRow = args.startRowIndex;\n }\n return { returnValue: cancel, currentBounds: currentBounds, currentRowIndex: currentRow };\n };\n /**\n * `Raises PageLayout event` if needed.\n * @private\n */\n PdfGridLayouter.prototype.raisePageLayouted = function (result) {\n var args = new PdfGridEndPageLayoutEventArgs(result);\n if (this.Grid.raiseEndPageLayout) {\n this.Grid.onEndPageLayout(args);\n }\n return args;\n };\n PdfGridLayouter.prototype.drawRow = function (row, result, height) {\n if (typeof result === 'undefined') {\n //.. Check if required space available.\n //.....If the row conains spans which falls through more than one page, then draw the row to next page. \n var result_1 = new RowLayoutResult();\n var rowHeightWithSpan = 0;\n var location_3 = new PointF(0, 0);\n var size = new SizeF(0, 0);\n var isHeader = false;\n if (row.rowSpanExists) {\n var maxSpan = 0;\n var currRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n if (currRowIndex === -1) {\n currRowIndex = this.Grid.headers.indexOf(row);\n if (currRowIndex !== -1) {\n isHeader = true;\n }\n }\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n }\n for (var i = currRowIndex; i < currRowIndex + maxSpan; i++) {\n rowHeightWithSpan += (isHeader ? this.Grid.headers.getHeader(i).height : this.Grid.rows.getRow(i).height);\n }\n // let rowMaxHeight : number = rowHeightWithSpan;\n // for (let i : number = 0; i < row.cells.count; i++ ) {\n // rowMaxHeight = rowMaxHeight > row.cells.getCell(i).height ? rowMaxHeight : row.cells.getCell(i).height;\n // }\n // let flag : boolean = true;\n // let nextRow : PdfGridRow = this.Grid.headers.getHeader(this.Grid.headers.indexOf(row) + 1);\n // for (let i : number = 0; i < nextRow.cells.count; i++ ) {\n // if (nextRow.cells.getCell(i).value !== '' && nextRow.cells.getCell(i).value !== undefined) {\n // flag = false;\n // break;\n // }\n // }\n // if ((rowMaxHeight > rowHeightWithSpan) && flag) {\n // row.height += (rowMaxHeight - rowHeightWithSpan);\n // } \n }\n var calculatedHeight = row.rowBreakHeight > 0.0 ? row.rowBreakHeight : row.height;\n if (typeof this.Grid.isChildGrid !== 'undefined' && this.Grid.isChildGrid && typeof this.Grid.ParentCell !== 'undefined' && this.Grid.ParentCell != null) {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n // if (calculatedHeight + this.Grid.ParentCell.row.grid.style.cellPadding.bottom +\n // this.Grid.ParentCell.row.grid.style.cellPadding.top > this.currentPageBounds.height) {\n // if (this.Grid.allowRowBreakAcrossPages) {\n // result.isFinish = true;\n // if ( this.Grid.isChildGrid && row.rowBreakHeight > 0 ) {\n // if (this.Grid.ParentCell.row.grid.style.cellPadding !== null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n // result.bounds = this.currentBounds ;\n // this.drawRowWithBreak(result, row, calculatedHeight);\n // } else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page. \n // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // calculatedHeight = this.currentBounds.height - this.currentBounds.y -\n // this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n // } else\n if (this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom + calculatedHeight >\n this.currentPageBounds.height || this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom\n + calculatedHeight > this.currentBounds.height || this.currentBounds.y +\n this.Grid.ParentCell.row.grid.style.cellPadding.bottom + rowHeightWithSpan > this.currentPageBounds.height) {\n //If a row is repeated and still cannot fit in page, proceed draw.\n if (typeof this.Grid.ParentCell.row.grid.LayoutFormat !== 'undefined' && this.Grid.ParentCell.row.grid.LayoutFormat.break === PdfLayoutBreakType.FitPage) {\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n this.Grid.splitChildRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n // if (this.Grid.isChildGrid && row.rowBreakHeightValue > 0) {\n // // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n result_1.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n }\n // else {\n // result.isFinish = false;\n // row.repeatFlag = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n // else {\n // result.isFinish = false;\n // }\n }\n else {\n result_1.isFinish = true;\n if (row.grid.ParentCell.row.rowBreakHeightValue > 0) {\n row.repeatFlag = true;\n }\n else {\n row.repeatFlag = false;\n calculatedHeight = row.height;\n }\n if (this.Grid.isChildGrid && row.rowBreakHeight > 0) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n calculatedHeight += this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n if (calculatedHeight > this.currentPageBounds.height) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n //result.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.isrowFinish = true;\n row.repeatFlag = true;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n // else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page.\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n else if (this.currentBounds.y + calculatedHeight > this.currentPageBounds.height ||\n this.currentBounds.y + calculatedHeight > (this.currentBounds.height + this.startLocation.y) ||\n this.currentBounds.y + rowHeightWithSpan > this.currentPageBounds.height) {\n // If a row is repeated and still cannot fit in page, proceed draw.\n var isFit = false;\n if ((this.Grid.allowRowBreakAcrossPages && !this.Grid.repeatHeader && !row.isRowHeightSet && !row.rowMergeComplete)) {\n if (this.Grid.LayoutFormat !== null && this.Grid.LayoutFormat.paginateBounds.height > 0) {\n isFit = this.isFitToCell((this.currentBounds.height + this.startLocation.y) - this.currentBounds.y, this.Grid, row);\n }\n else\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (isFit) {\n this.isPaginate = true;\n }\n }\n else if (this.Grid.allowRowBreakAcrossPages && this.Grid.LayoutFormat != null && this.Grid.LayoutFormat.layout == PdfLayoutType.Paginate && this.Grid.LayoutFormat.break != PdfLayoutBreakType.FitElement && row.isRowHeightSet && this.currentBounds.y + height > this.currentPageBounds.height) {\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (!isFit)\n isFit = !(this.slr !== null && this.slr.actualSize.height == 0 && this.slr.remainder != null && this.slr.remainder.length > 0 && this.remainderText == this.slr.remainder);\n if (isFit && this.slr != null && this.slr.lineCount > 1) {\n //It may text cutoff issue\n isFit = false;\n }\n this.remainderText = null;\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex || isFit) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = false;\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = true;\n this.drawRow(row, result_1, calculatedHeight);\n row.repeatFlag = false;\n }\n }\n return result_1;\n }\n else {\n var skipcell = false;\n var location_4 = new PointF(this.currentBounds.x, this.currentBounds.y);\n // if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x && row.width <\n // this.currentPage.getClientSize().width) {\n // location.x = this.startLocation.x;\n // }\n result.bounds = new RectangleF(location_4, new SizeF(0, 0));\n height = this.ReCalculateHeight(row, height);\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var cancelSpans = ((i > this.cellEndIndex + 1) && (row.cells.getCell(i).columnSpan > 1));\n // let cancelSpans : boolean = false;\n if (!cancelSpans) {\n for (var j = 1; j < row.cells.getCell(i).columnSpan; j++) {\n row.cells.getCell(i + j).isCellMergeContinue = true;\n }\n }\n var size = new SizeF(this.Grid.columns.getColumn(i).width, height);\n // if (size.width > this.currentGraphics.clientSize.width) {\n // size.width = this.currentGraphics.clientSize.width;\n // }\n // if (this.Grid.isChildGrid && this.Grid.style.allowHorizontalOverflow) {\n // if (size.width >= this.currentGraphics.clientSize.width) {\n // size.width -= 2 * this.currentBounds.x;\n // }\n // }\n /* tslint:disable */\n if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n this.CheckIfDefaultFormat(row.cells.getCell(i).stringFormat)) {\n row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n }\n var cellstyle = row.cells.getCell(i).style;\n var tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n row.cells.getCell(i).style = this.RaiseBeforeCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, cellstyle);\n //row.cells.getCell(i).style = cellstyle;\n if (!skipcell) {\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n grid.parentCellIndex = i;\n }\n var stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location_4, size), cancelSpans);\n if (row.grid.style.allowHorizontalOverflow && (row.cells.getCell(i).columnSpan > this.cellEndIndex ||\n i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1) && this.cellEndIndex < row.cells.count - 1) {\n row.rowOverflowIndex = this.cellEndIndex;\n }\n if (row.grid.style.allowHorizontalOverflow && (row.rowOverflowIndex > 0 && (row.cells.getCell(i).columnSpan >\n this.cellEndIndex || i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1)) &&\n row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1 > 0) {\n row.cells.getCell(row.rowOverflowIndex + 1).value = stringResult !== null ? (stringResult.remainder !== undefined) ?\n stringResult.remainder : '' : '';\n row.cells.getCell(row.rowOverflowIndex + 1).stringFormat = row.cells.getCell(i).stringFormat;\n row.cells.getCell(row.rowOverflowIndex + 1).style = row.cells.getCell(i).style;\n row.cells.getCell(row.rowOverflowIndex + 1).columnSpan = row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1;\n }\n }\n /* tslint:enable */\n tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n if (!cancelSpans) {\n this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, row.cells.getCell(i).style);\n }\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n if (this.Grid.columns.getColumn(i).width >= this.currentGraphics.clientSize.width) {\n location_4.x = grid.rowLayoutBoundsWidth;\n location_4.x += grid.style.cellSpacing;\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n if (!row.rowMergeComplete || row.isRowHeightSet) {\n this.currentBounds.y += height;\n }\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location_4.x, location_4.y));\n }\n };\n PdfGridLayouter.prototype.isFitToCell = function (currentHeight, grid, gridRow) {\n var isFit = false;\n var layouter = new PdfStringLayouter();\n for (var i = 0; i < gridRow.cells.count; i++) {\n var cell = gridRow.cells.getCell(i);\n if (typeof cell.value !== 'undefined' && cell.value !== null && typeof cell.value === 'string') {\n var font = null;\n if (typeof cell.style.font !== 'undefined' && cell.style.font != null) {\n font = cell.style.font;\n }\n else if (typeof cell.row.style.font !== 'undefined' && cell.row.style.font != null) {\n font = cell.row.style.font;\n }\n else if (typeof cell.row.grid.style.font !== 'undefined' && cell.row.grid.style.font != null) {\n font = cell.row.grid.style.font;\n }\n else {\n font = PdfDocument.defaultFont;\n }\n this.remainderText = gridRow.cells.getCell(i).value;\n var width = gridRow.cells.getCell(i).width;\n if (grid.columns.getColumn(i).isCustomWidth && gridRow.cells.getCell(i).width > grid.columns.getColumn(i).width) {\n width = grid.columns.getColumn(i).width;\n }\n this.slr = layouter.layout(gridRow.cells.getCell(i).value, font, gridRow.cells.getCell(i).stringFormat, new SizeF(width, currentHeight), false, this.currentPageBounds);\n var height = this.slr.actualSize.height;\n if (height == 0) {\n isFit = false;\n break;\n }\n if (gridRow.cells.getCell(i).style != null && gridRow.cells.getCell(i).style.borders != null && gridRow.cells.getCell(i).style.borders.top != null && gridRow.cells.getCell(i).style.borders.bottom != null)\n height += (gridRow.cells.getCell(i).style.borders.top.width + gridRow.cells.getCell(i).style.borders.bottom.width) * 2;\n if (this.slr.lineCount > 1 && gridRow.cells.getCell(i).stringFormat != null && gridRow.cells.getCell(i).stringFormat.lineSpacing != 0)\n height += (this.slr.lineCount - 1) * (gridRow.cells.getCell(i).style.stringFormat.lineSpacing);\n if (gridRow.cells.getCell(i).style.cellPadding == null) {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n else {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n height += grid.style.cellSpacing;\n if (currentHeight > height || (typeof this.slr.remainder !== 'undefined' && this.slr.remainder !== null)) {\n isFit = true;\n break;\n }\n }\n }\n return isFit;\n };\n PdfGridLayouter.prototype.drawRowWithBreak = function (result, row, calculateHeight) {\n var location = new PointF(this.currentBounds.x, this.currentBounds.y);\n if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x) {\n location.x = this.startLocation.x;\n }\n result.bounds = new RectangleF(location, new SizeF(0, 0));\n this.gridHeight = row.rowBreakHeight > 0 ? this.currentPageBounds.height : 0;\n // Calculate the remaining height.\n if (row.grid.style.cellPadding.top + this.currentBounds.y + row.grid.style.cellPadding.bottom < this.currentPageBounds.height) {\n row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n }\n // else {\n // row.rowBreakHeight = calculateHeight;\n // result.isFinish = false;\n // return;\n // }\n // No need to explicit break if the row height is equal to grid height.\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n var cellHeight = cell.measureHeight();\n if (cellHeight === calculateHeight && cell.value instanceof PdfGrid) {\n row.rowBreakHeight = 0;\n }\n // else if (cellHeight === calculateHeight && (cell.value as PdfGrid) === null) {\n // row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n // }\n }\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var cancelSpans = ((row.cells.getCell(i).columnSpan + i > this.cellEndIndex + 1) &&\n (row.cells.getCell(i).columnSpan > 1));\n // if (!cancelSpans) {\n // for (let k : number = 1; k < row.cells.getCell(i).columnSpan; k++) {\n // row.cells.getCell(i + k).isCellMergeContinue = true;\n // }\n //}\n var size = new SizeF(this.Grid.columns.getColumn(i).width, this.gridHeight > 0.0 ? this.gridHeight :\n this.currentPageBounds.height);\n // if (size.width === 0) {\n // size = new SizeF(row.cells.getCell(i).width, size.height);\n // }\n // if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n // this.CheckIfDefaultFormat((row.cells.getCell(i).stringFormat))) {\n // row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n // }\n var cellstyle1 = row.cells.getCell(i).style;\n row.cells.getCell(i).style = cellstyle1;\n var skipcell = false;\n var stringResult = null;\n if (!skipcell) {\n stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location, size), cancelSpans);\n }\n //If still row is to be drawn, set cell finished drawing cell as false and update the text to be drawn.\n if (row.rowBreakHeight > 0.0) {\n if (stringResult != null && typeof stringResult.remainder !== 'undefined') {\n row.cells.getCell(i).FinishedDrawingCell = false;\n row.cells.getCell(i).remainingString = stringResult.remainder == null ? ' ' : stringResult.remainder;\n row.rowBreakHeight = calculateHeight - stringResult.actualSize.height;\n }\n }\n result.isFinish = (!result.isFinish) ? result.isFinish : row.cells.getCell(i).FinishedDrawingCell;\n // let tempValue : string = ((typeof row.cells.getCell(i).value === 'string' &&\n //row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '') as string;\n // if (!cancelSpans) {\n // // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i,\n // // new RectangleF(location, size), tempValue, row.cells.getCell(i).style); \n // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location, size),\n // (row.cells.getCell(i).value as string) ? row.cells.getCell(i).value.toString() : ' ',\n // row.cells.getCell(i).style);\n // } \n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n this.rowBreakPageHeightCellIndex = i;\n // row.cells.getCell(i).pageCount = grid.listOfNavigatePages.length;\n // for (let j : number = 0;j= this.currentGraphics.clientSize.width) {\n location.x = this.rowLayoutBoundsWidth;\n location.x += grid.style.cellSpacing;\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n this.currentBounds.y += this.gridHeight > 0.0 ? this.gridHeight : calculateHeight;\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location.x, location.y));\n };\n /**\n * @hidden\n * @private\n */\n PdfGridLayouter.repeatRowIndex = -1;\n return PdfGridLayouter;\n}(ElementLayouter));\nexport { PdfGridLayouter };\n// recalculateBounds : boolean, clientSize : SizeF\n//Implementation\n/**\n * `Initializes` internal data.\n * @private\n */\n//Internal declaration\nvar PdfGridLayoutResult = /** @class */ (function (_super) {\n __extends(PdfGridLayoutResult, _super);\n /**\n * Constructor\n * @private\n */\n function PdfGridLayoutResult(page, bounds) {\n return _super.call(this, page, bounds) || this;\n }\n return PdfGridLayoutResult;\n}(PdfLayoutResult));\nexport { PdfGridLayoutResult };\n/**\n * `PdfGridLayoutFormat` class represents a flexible grid that consists of columns and rows.\n */\nvar PdfGridLayoutFormat = /** @class */ (function (_super) {\n __extends(PdfGridLayoutFormat, _super);\n /**\n * Initializes a new instance of the `PdfGridLayoutFormat` class.\n * @private\n */\n function PdfGridLayoutFormat(baseFormat) {\n return _super.call(this, baseFormat) || this;\n }\n return PdfGridLayoutFormat;\n}(PdfLayoutFormat));\nexport { PdfGridLayoutFormat };\nvar GridCellEventArgs = /** @class */ (function () {\n // Constructors\n /**\n * Initialize a new instance for `GridCellEventArgs` class.\n * @private\n */\n function GridCellEventArgs(graphics, rowIndex, cellIndex, bounds, value) {\n this.gridRowIndex = rowIndex;\n this.gridCellIndex = cellIndex;\n this.internalValue = value;\n this.gridBounds = bounds;\n this.pdfGraphics = graphics;\n }\n Object.defineProperty(GridCellEventArgs.prototype, \"rowIndex\", {\n // Properties\n /**\n * Gets the value of current `row index`.\n * @private\n */\n get: function () {\n return this.gridRowIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"cellIndex\", {\n /**\n * Gets the value of current `cell index`.\n * @private\n */\n get: function () {\n return this.gridCellIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"value\", {\n /**\n * Gets the actual `value` of current cell.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of current cell.\n * @private\n */\n get: function () {\n return this.gridBounds;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"graphics\", {\n /**\n * Gets the instance of `current graphics`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n return GridCellEventArgs;\n}());\nexport { GridCellEventArgs };\nvar PdfGridBeginCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StartCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.style = style;\n return _this;\n }\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"skip\", {\n // Properties\n /**\n * Gets or sets a value indicating whether the value of this cell should be `skipped`.\n * @private\n */\n get: function () {\n return this.bSkip;\n },\n set: function (value) {\n this.bSkip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"style\", {\n /**\n * Gets or sets a `style` value of the cell.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridBeginCellDrawEventArgs };\nvar PdfGridEndCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfGridEndCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.cellStyle = style;\n return _this;\n }\n Object.defineProperty(PdfGridEndCellDrawEventArgs.prototype, \"style\", {\n // Propertise\n /**\n * Get the `PdfGridCellStyle`.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridEndCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridEndCellDrawEventArgs };\nvar PdfCancelEventArgs = /** @class */ (function () {\n function PdfCancelEventArgs() {\n }\n Object.defineProperty(PdfCancelEventArgs.prototype, \"cancel\", {\n // Properties\n /**\n * Gets and Sets the value of `cancel`.\n * @private\n */\n get: function () {\n return this.isCancel;\n },\n set: function (value) {\n this.isCancel = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCancelEventArgs;\n}());\nexport { PdfCancelEventArgs };\nvar BeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(BeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `BeginPageLayoutEventArgs` class with the specified rectangle and page.\n * @private\n */\n function BeginPageLayoutEventArgs(bounds, page) {\n var _this = _super.call(this) || this;\n _this.bounds = bounds;\n _this.pdfPage = page;\n return _this;\n }\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"bounds\", {\n // Properties\n /**\n * Gets or sets value that indicates the lay outing `bounds` on the page.\n * @private\n */\n get: function () {\n return this.cellBounds;\n },\n set: function (value) {\n this.cellBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"page\", {\n /**\n * Gets the `page` where the lay outing should start.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return BeginPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { BeginPageLayoutEventArgs };\n/**\n * `EndPageLayoutEventArgs` class is alternate for end page layout events.\n */\nvar EndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(EndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `EndPageLayoutEventArgs` class. with the specified 'PdfLayoutResult'.\n * @private\n */\n function EndPageLayoutEventArgs(result) {\n var _this = _super.call(this) || this;\n _this.layoutResult = result;\n return _this;\n }\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"result\", {\n // Properties\n /**\n * Gets the lay outing `result` of the page.\n * @private\n */\n get: function () {\n return this.layoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"nextPage\", {\n /**\n * Gets or sets a value indicating the `next page` where the element should be layout.\n * @private\n */\n get: function () {\n return this.nextPdfPage;\n },\n set: function (value) {\n this.nextPdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n return EndPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { EndPageLayoutEventArgs };\n/**\n * `PdfGridBeginPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridBeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridBeginPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginPageLayoutEventArgs(bounds, page, startRow) {\n var _this = _super.call(this, bounds, page) || this;\n _this.startRow = startRow;\n return _this;\n }\n Object.defineProperty(PdfGridBeginPageLayoutEventArgs.prototype, \"startRowIndex\", {\n // Properties\n /**\n * Gets the `start row index`.\n * @private\n */\n get: function () {\n return this.startRow;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginPageLayoutEventArgs;\n}(BeginPageLayoutEventArgs));\nexport { PdfGridBeginPageLayoutEventArgs };\n/**\n * `PdfGridEndPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridEndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridEndPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndPageLayoutEventArgs(result) {\n return _super.call(this, result) || this;\n }\n return PdfGridEndPageLayoutEventArgs;\n}(EndPageLayoutEventArgs));\nexport { PdfGridEndPageLayoutEventArgs };\nvar RowLayoutResult = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `RowLayoutResult` class.\n * @private\n */\n function RowLayoutResult() {\n this.layoutedBounds = new RectangleF(0, 0, 0, 0);\n }\n Object.defineProperty(RowLayoutResult.prototype, \"isFinish\", {\n /**\n * Gets or sets a value indicating whether this instance `is finish`.\n * @private\n */\n get: function () {\n return this.bIsFinished;\n },\n set: function (value) {\n this.bIsFinished = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RowLayoutResult.prototype, \"bounds\", {\n /**\n * Gets or sets the `bounds`.\n * @private\n */\n get: function () {\n return this.layoutedBounds;\n },\n set: function (value) {\n this.layoutedBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n return RowLayoutResult;\n}());\nexport { RowLayoutResult };\n","import { PdfGrid } from './pdf-grid';\nimport { PdfGridCellStyle } from './styles/style';\nimport { PdfStringLayouter } from './../../graphics/fonts/string-layouter';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\nimport { RectangleF, PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfDashStyle, PdfLineCap } from './../../graphics/enum';\nimport { PdfBorderOverlapStyle } from './../tables/light-tables/enum';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfImage } from './../../graphics/images/pdf-image';\nimport { PdfBitmap } from './../../graphics/images/pdf-bitmap';\nimport { PdfTextWebLink } from './../../annotations/pdf-text-web-link';\nimport { PdfLayoutType } from './../../graphics/figures/enum';\nimport { PdfGridLayouter, PdfGridLayoutFormat } from './../../structured-elements/grid/layout/grid-layouter';\nimport { PdfLayoutParams } from '../../../implementation/graphics/figures/base/element-layouter';\n/**\n * `PdfGridCell` class represents the schema of a cell in a 'PdfGrid'.\n */\nvar PdfGridCell = /** @class */ (function () {\n function PdfGridCell(row) {\n /**\n * `Width` of the cell.\n * @default 0\n * @private\n */\n this.cellWidth = 0;\n /**\n * `Height` of the cell.\n * @default 0\n * @private\n */\n this.cellHeight = 0;\n /**\n * `tempval`to stores current width .\n * @default 0\n * @private\n */\n this.tempval = 0;\n this.fontSpilt = false;\n /**\n * Specifies weather the `cell is drawn`.\n * @default true\n * @private\n */\n this.finsh = true;\n /**\n * The `remaining height` of row span.\n * @default 0\n * @private\n */\n this.rowSpanRemainingHeight = 0;\n this.hasRowSpan = false;\n this.hasColSpan = false;\n /**\n * the 'isFinish' is set to page finish\n */\n this.isFinish = true;\n /**\n * The `present' to store the current cell.\n * @default false\n * @private\n */\n this.present = false;\n this.gridRowSpan = 1;\n this.colSpan = 1;\n if (typeof row !== 'undefined') {\n this.gridRow = row;\n }\n }\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeContinue\", {\n //Properties\n get: function () {\n return this.internalIsCellMergeContinue;\n },\n set: function (value) {\n this.internalIsCellMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeContinue\", {\n get: function () {\n return this.internalIsRowMergeContinue;\n },\n set: function (value) {\n this.internalIsRowMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeStart\", {\n get: function () {\n return this.internalIsCellMergeStart;\n },\n set: function (value) {\n this.internalIsCellMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeStart\", {\n get: function () {\n return this.internalIsRowMergeStart;\n },\n set: function (value) {\n this.internalIsRowMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"remainingString\", {\n /**\n * Gets or sets the `remaining string` after the row split between pages.\n * @private\n */\n get: function () {\n return this.remaining;\n },\n set: function (value) {\n this.remaining = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"FinishedDrawingCell\", {\n /**\n * Gets or sets the `FinishedDrawingCell` .\n * @private\n */\n get: function () {\n return this.isFinish;\n },\n set: function (value) {\n this.isFinish = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `string format`.\n * @private\n */\n get: function () {\n if (this.format == null) {\n this.format = new PdfStringFormat();\n }\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"row\", {\n /**\n * Gets or sets the parent `row`.\n * @private\n */\n get: function () {\n return this.gridRow;\n },\n set: function (value) {\n this.gridRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the cell.\n * @private\n */\n get: function () {\n return this.objectValue;\n },\n set: function (value) {\n this.objectValue = value;\n if (this.objectValue instanceof PdfGrid) {\n this.row.grid.isSingleGrid = false;\n var grid = this.objectValue;\n grid.ParentCell = this;\n this.objectValue.isChildGrid = true;\n var rowCount = this.row.grid.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.row.grid.rows.getRow(i);\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cell.parent = this;\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"rowSpan\", {\n /**\n * Gets or sets a value that indicates the total number of rows that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.gridRowSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw new Error('ArgumentException : Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.gridRowSpan = value;\n this.row.rowSpanExists = true;\n this.row.grid.hasRowSpanSpan = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"style\", {\n /**\n * Gets or sets the cell `style`.\n * @private\n */\n get: function () {\n if (this.cellStyle == null) {\n this.cellStyle = new PdfGridCellStyle();\n }\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"height\", {\n /**\n * Gets the `height` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellHeight === 0) {\n this.cellHeight = this.measureHeight();\n }\n return this.cellHeight;\n },\n set: function (value) {\n this.cellHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"columnSpan\", {\n /**\n * Gets or sets a value that indicates the total number of columns that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.colSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw Error('Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.colSpan = value;\n this.row.columnSpanExists = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"width\", {\n /**\n * Gets the `width` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellWidth === 0 || this.row.grid.isComplete) {\n this.cellWidth = this.measureWidth();\n }\n return Math.round(this.cellWidth);\n },\n set: function (value) {\n this.cellWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the width`.\n * @private\n */\n PdfGridCell.prototype.measureWidth = function () {\n // .. Calculate the cell text width.\n // .....Add border widths, cell spacings and paddings to the width.\n var width = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string') {\n /* tslint:disable */\n var slr = layouter.layout(this.objectValue, this.getTextFont(), this.stringFormat, new SizeF(Number.MAX_VALUE, Number.MAX_VALUE), false, new SizeF(0, 0));\n width += slr.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n width = this.objectValue.size.width;\n //width += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n width += this.objectValue.width;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n var result = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(0, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n width += result.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding != null) {\n width += (this.style.cellPadding.left + this.style.cellPadding.right);\n }\n else {\n width += (this.row.grid.style.cellPadding.left + this.row.grid.style.cellPadding.right);\n }\n }\n else {\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n width += this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n width += this.style.cellPadding.right;\n }\n }\n else {\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n width += this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n width += this.row.grid.style.cellPadding.right;\n }\n }\n }\n width += this.row.grid.style.cellSpacing;\n return width;\n };\n /**\n * Draw the `cell background`.\n * @private\n */\n PdfGridCell.prototype.drawCellBackground = function (graphics, bounds) {\n var backgroundBrush = this.getBackgroundBrush();\n //graphics.isTemplateGraphics = true;\n if (backgroundBrush != null) {\n graphics.save();\n graphics.drawRectangle(backgroundBrush, bounds.x, bounds.y, bounds.width, bounds.height);\n graphics.restore();\n }\n if (this.style.backgroundImage != null) {\n var image = this.getBackgroundImage();\n graphics.drawImage(this.style.backgroundImage, bounds.x, bounds.y, bounds.width, bounds.height);\n }\n };\n /**\n * `Adjusts the text layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustContentLayoutArea = function (bounds) {\n //Add Padding value to its Cell Bounds\n var returnBounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n if (!(this.objectValue instanceof PdfGrid)) {\n if (typeof this.style.cellPadding === 'undefined' || this.style.cellPadding == null) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n returnBounds.height -= (this.gridRow.grid.style.cellPadding.bottom + this.gridRow.grid.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n else {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.style.cellPadding.bottom + this.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n if (this.rowSpan === 1) {\n returnBounds.width -= (this.style.borders.left.width);\n }\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.gridRow.grid.style.cellPadding.left !== 'undefined' && this.gridRow.grid.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.gridRow.grid.style.cellPadding.left;\n }\n if (typeof this.gridRow.grid.style.cellPadding.top !== 'undefined' && this.gridRow.grid.style.cellPadding.hasTopPad) {\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.gridRow.grid.style.cellPadding.top;\n }\n if (typeof this.gridRow.grid.style.cellPadding.right !== 'undefined' && this.gridRow.grid.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.gridRow.grid.style.cellPadding.right;\n }\n if (typeof this.gridRow.grid.style.cellPadding.bottom !== 'undefined' && this.gridRow.grid.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.gridRow.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.style.cellPadding.right;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.style.cellPadding.bottom;\n }\n }\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n return returnBounds;\n };\n /**\n * `Draws` the specified graphics.\n * @private\n */\n PdfGridCell.prototype.draw = function (graphics, bounds, cancelSubsequentSpans) {\n var isrowbreak = false;\n /*if (!this.row.grid.isSingleGrid)\n {\n //Check whether the Grid Span to Nextpage\n if ((this.remainingString != null) || (PdfGridLayouter.repeatRowIndex != -1))\n {\n this.DrawParentCells(graphics, bounds, true);\n }\n else if (this.row.grid.rows.count > 1)\n {\n for (let i : number = 0; i < this.row.grid.rows.count; i++)\n {\n if (this.row == this.row.grid.rows.getRow(i))\n {\n if (this.row.grid.rows.getRow(i).rowBreakHeight > 0)\n isrowbreak = true;\n if ((i > 0) && (isrowbreak))\n this.DrawParentCells(graphics, bounds, false);\n }\n }\n }\n } */\n var result = null;\n /*if (cancelSubsequentSpans)\n {\n //..Cancel all subsequent cell spans, if no space exists.\n let currentCellIndex : number = this.row.cells.indexOf(this);\n for (let i : number = currentCellIndex + 1; i <= currentCellIndex + this.colSpan; i++)\n {\n this.row.cells.getCell(i).isCellMergeContinue = false;\n this.row.cells.getCell(i).isRowMergeContinue = false;\n }\n this.colSpan = 1;\n }*/\n //..Skip cells which were already covered by spanmap.\n if (this.internalIsCellMergeContinue || this.internalIsRowMergeContinue) {\n if (this.internalIsCellMergeContinue && this.row.grid.style.allowHorizontalOverflow) {\n if ((this.row.rowOverflowIndex > 0 && (this.row.cells.indexOf(this) != this.row.rowOverflowIndex + 1)) || (this.row.rowOverflowIndex == 0 && this.internalIsCellMergeContinue)) {\n return result;\n }\n }\n else {\n return result;\n }\n }\n //Adjust bounds with Row and Column Spacing\n bounds = this.adjustOuterLayoutArea(bounds, graphics);\n this.drawCellBackground(graphics, bounds);\n var textPen = this.getTextPen();\n var textBrush = this.getTextBrush();\n if (typeof textPen === 'undefined' && typeof textBrush === 'undefined') {\n textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var font = this.getTextFont();\n var strFormat = this.getStringFormat();\n var innerLayoutArea = bounds;\n if (innerLayoutArea.height >= graphics.clientSize.height) {\n // If to break row to next page.\n if (this.row.grid.allowRowBreakAcrossPages) {\n innerLayoutArea.height -= innerLayoutArea.y;\n //bounds.height -= bounds.y;\n // if(this.row.grid.isChildGrid)\n // {\n // innerLayoutArea.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n // if user choose to cut the row whose height is more than page height.\n // else\n // {\n // innerLayoutArea.height = graphics.clientSize.height;\n // bounds.height = graphics.clientSize.height;\n // }\n }\n innerLayoutArea = this.adjustContentLayoutArea(innerLayoutArea);\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var temp = void 0;\n var layoutRectangle = void 0;\n if (innerLayoutArea.height < font.height)\n layoutRectangle = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, font.height);\n else\n layoutRectangle = innerLayoutArea;\n if (innerLayoutArea.height < font.height && this.row.grid.isChildGrid && this.row.grid.ParentCell != null) {\n var height = layoutRectangle.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom - this.row.grid.style.cellPadding.bottom;\n if (this.row.grid.splitChildRowIndex != -1) {\n this.fontSpilt = true;\n this.row.rowFontSplit = true;\n }\n if (height > 0 && height < font.height)\n layoutRectangle.height = height;\n // else if (height + this.row.grid.style.cellPadding.bottom > 0 && height + this.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = height + this.row.grid.style.cellPadding.bottom;\n // else if (bounds.height < font.height)\n // layoutRectangle.height = bounds.height;\n // else if (bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom; \n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n layoutRectangle.width -= this.gridRow.grid.style.cellSpacing;\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n if (this.isFinish) {\n // if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined'){\n // this.remaining = '';\n // graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // } else {\n temp = this.remaining === '' ? this.remaining : this.objectValue;\n graphics.drawString(temp, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined') {\n this.remaining = '';\n //graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n }\n else {\n if (typeof this.remaining == 'undefined' || this.remaining === null) {\n this.remaining = '';\n }\n if (this.row.repeatFlag) {\n graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n // else {\n // if(this.row.grid.ParentCell.row.repeatFlag) {\n // graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat); \n // } else {\n // layoutRectangle.height = this.row.height;\n // graphics.drawString((this.objectValue as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // bounds.height = this.row.height;\n // }\n // }\n this.isFinish = true;\n //graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n result = graphics.stringLayoutResult;\n // if(this.row.grid.isChildGrid && this.row.rowBreakHeight > 0 && result !=null) {\n // bounds.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n else if (this.objectValue instanceof PdfGrid) {\n var childGrid = this.objectValue;\n childGrid.isChildGrid = true;\n childGrid.ParentCell = this;\n var layoutRect = void 0;\n layoutRect = innerLayoutArea;\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n // layoutRect = bounds;\n // if (this.style.cellPadding != null){\n // layoutRect = bounds; \n // } else if((this.row.grid.style.cellPadding != null) && (childGrid.style.cellPadding.bottom === 0.5) && (childGrid.style.cellPadding.top === 0.5)\n // && (childGrid.style.cellPadding.left === 5.76) && (childGrid.style.cellPadding.right === 5.76)\n // && (this.gridRow.grid.style.cellSpacing === 0) && (childGrid.style.cellSpacing === 0)) {\n // layoutRect = innerLayoutArea;\n // }\n // if(this.objectValue.style.cellPadding != null && typeof this.objectValue.style.cellPadding !== 'undefined'){\n // layoutRect = bounds;\n // } \n var layouter = new PdfGridLayouter(childGrid);\n var format = new PdfGridLayoutFormat();\n if (this.row.grid.LayoutFormat != null)\n format = this.row.grid.LayoutFormat;\n else\n format.layout = PdfLayoutType.Paginate;\n var param = new PdfLayoutParams();\n if (graphics.layer != null) {\n // Define layout parameters.\n param.page = graphics.page;\n param.bounds = layoutRect;\n param.format = format;\n //Set the span \n childGrid.setSpan();\n childGrid.checkSpan();\n // Draw the child grid.\n var childGridResult = layouter.Layouter(param);\n //let childGridResult : PdfLayoutResult = layouter.innerLayout(param);\n this.value = childGrid;\n if (this.row.grid.splitChildRowIndex !== -1) {\n this.height = this.row.rowBreakHeightValue;\n }\n if (param.page != childGridResult.page) //&& (isWidthGreaterthanParent != true))\n {\n childGridResult.bounds.height = this.row.rowBreakHeightValue;\n if (this.row.rowBreakHeight == 0)\n this.row.NestedGridLayoutResult = childGridResult;\n else\n this.row.rowBreakHeight = this.row.rowBreakHeightValue;\n //bounds.height = this.row.rowBreakHeight;\n //After drawing paginated nested grid, the bounds of the parent grid in start page should be corrected for borders.\n //bounds.height = graphics.clientSize.height - bounds.y;\n }\n }\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n var imageBounds = void 0;\n if (this.objectValue.width <= innerLayoutArea.width) {\n imageBounds = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, this.objectValue.width, innerLayoutArea.height);\n }\n else {\n imageBounds = innerLayoutArea;\n }\n graphics.drawImage(this.objectValue, imageBounds.x, imageBounds.y, imageBounds.width, imageBounds.height);\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n this.objectValue.draw(graphics.currentPage, innerLayoutArea);\n }\n else if (typeof this.objectValue === 'undefined') {\n this.objectValue = \"\";\n graphics.drawString(this.objectValue, font, textPen, textBrush, innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, innerLayoutArea.height, strFormat);\n if (this.style.cellPadding != null && this.style.cellPadding.bottom == 0 && this.style.cellPadding.left == 0 && this.style.cellPadding.right == 0 && this.style.cellPadding.top == 0) {\n bounds.width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n }\n if (this.style.borders != null) {\n if (!this.fontSpilt)\n this.drawCellBorders(graphics, bounds);\n else {\n if (this.row.grid.ParentCell.row.grid.splitChildRowIndex != -1) {\n this.row.rowFontSplit = false;\n this.drawCellBorders(graphics, bounds);\n }\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Draws the `cell border` constructed by drawing lines.\n * @private\n */\n PdfGridCell.prototype.drawCellBorders = function (graphics, bounds) {\n if (this.row.grid.style.borderOverlapStyle === PdfBorderOverlapStyle.Inside) {\n bounds.x += this.style.borders.left.width;\n bounds.y += this.style.borders.top.width;\n bounds.width -= this.style.borders.right.width;\n bounds.height -= this.style.borders.bottom.width;\n }\n var p1 = new PointF(bounds.x, bounds.y + bounds.height);\n var p2 = new PointF(bounds.x, bounds.y);\n var pen = this.cellStyle.borders.left;\n if (this.cellStyle.borders.left.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n // SetTransparency(ref graphics, pen);\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n pen = this.cellStyle.borders.right;\n if ((bounds.x + bounds.width) > (graphics.clientSize.width - (pen.width / 2))) {\n p1 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y);\n p2 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y + bounds.height);\n }\n if (this.cellStyle.borders.right.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y);\n pen = this.cellStyle.borders.top;\n if (this.cellStyle.borders.top.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n p2 = new PointF(bounds.x, bounds.y + bounds.height);\n pen = this.cellStyle.borders.bottom;\n if ((bounds.y + bounds.height) > (graphics.clientSize.height - (pen.width / 2))) {\n p1 = new PointF((bounds.x + bounds.width), (graphics.clientSize.height - (pen.width / 2)));\n p2 = new PointF(bounds.x, (graphics.clientSize.height - (pen.width / 2)));\n }\n if (this.cellStyle.borders.bottom.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n };\n // private setTransparency(graphics : PdfGraphics, pen : PdfPen) : void {\n // let alpha : number = (pen.color.a / 255) as number;\n // graphics.save();\n // graphics.setTransparency(alpha);\n // }\n /**\n * `Adjusts the outer layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustOuterLayoutArea = function (bounds, g) {\n var isHeader = false;\n var cellSpacing = this.row.grid.style.cellSpacing;\n if (cellSpacing > 0) {\n bounds = new RectangleF(bounds.x + cellSpacing, bounds.y + cellSpacing, bounds.width - cellSpacing, bounds.height - cellSpacing);\n }\n var currentColIndex = this.row.cells.indexOf(this);\n if (this.columnSpan > 1 || (this.row.rowOverflowIndex > 0 && (currentColIndex == this.row.rowOverflowIndex + 1) && this.isCellMergeContinue)) {\n var span = this.columnSpan;\n if (span == 1 && this.isCellMergeContinue) {\n for (var j = currentColIndex + 1; j < this.row.grid.columns.count; j++) {\n if (this.row.cells.getCell(j).isCellMergeContinue)\n span++;\n else\n break;\n }\n }\n var totalWidth = 0;\n for (var i = currentColIndex; i < currentColIndex + span; i++) {\n if (this.row.grid.style.allowHorizontalOverflow) {\n var width = void 0;\n var compWidth = this.row.grid.size.width < g.clientSize.width ? this.row.grid.size.width : g.clientSize.width;\n if (this.row.grid.size.width > g.clientSize.width) {\n width = bounds.x + totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n else {\n width = totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n if (width > compWidth) {\n break;\n }\n }\n totalWidth += this.row.grid.columns.getColumn(i).width;\n }\n totalWidth -= this.row.grid.style.cellSpacing;\n bounds.width = totalWidth;\n }\n if (this.rowSpan > 1 || this.row.rowSpanExists) {\n var span = this.rowSpan;\n var currentRowIndex = this.row.grid.rows.rowCollection.indexOf(this.row);\n if (currentRowIndex == -1) {\n currentRowIndex = this.row.grid.headers.indexOf(this.row);\n if (currentRowIndex != -1) {\n isHeader = true;\n }\n }\n // if (span == 1 && this.isCellMergeContinue) {\n // for (let j : number = currentRowIndex + 1; j < this.row.grid.rows.count; j++)\n // {\n // let flag : boolean = (isHeader ? this.row.grid.headers.getHeader(j).cells.getCell(currentColIndex).isCellMergeContinue : this.row.grid.rows.getRow(j).cells.getCell(currentColIndex).isCellMergeContinue);\n // if (flag)\n // span++;\n // else\n // break;\n // }\n // }\n var totalHeight = 0;\n var max = 0;\n for (var i = currentRowIndex; i < currentRowIndex + span; i++) {\n totalHeight += (isHeader ? this.row.grid.headers.getHeader(i).height : this.row.grid.rows.getRow(i).height);\n var row = this.row.grid.rows.getRow(i);\n var rowIndex = this.row.grid.rows.rowCollection.indexOf(row);\n /*if (this.rowSpan > 1)\n {\n for (let k : number = 0; k < this.row.cells.count; k++) {\n let cell : PdfGridCell = this.row.cells.getCell(k);\n if(cell.rowSpan>1)\n {\n let tempHeight : number =0;\n \n for (let j :number = i; j < i +cell.rowSpan; j++)\n {\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = false;\n tempHeight += this.row.grid.rows.getRow(j).height;\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = true;\n }\n //To check the Row spanned cell height is greater than the total spanned row height.\n if(cell.height>tempHeight)\n {\n if (max < (cell.height - tempHeight))\n {\n max = cell.height - tempHeight;\n if (this.rowSpanRemainingHeight != 0 && max > this.rowSpanRemainingHeight)\n {\n max += this.rowSpanRemainingHeight;\n }\n let index :number = row.cells.indexOf(cell);\n //set the m_rowspanRemainingHeight to last rowspanned row.\n this.row.grid.rows.getRow((rowIndex +cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight = max;\n this.rowSpanRemainingHeight = this.row.grid.rows.getRow((rowIndex + cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight;\n }\n }\n }\n }\n }\n if (!this.row.grid.rows.getRow(i).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(i).isRowHeightSet = true;*/\n }\n var cellIndex = this.row.cells.indexOf(this);\n totalHeight -= this.row.grid.style.cellSpacing;\n // if (this.row.cells.getCell(cellIndex).height > totalHeight && (!this.row.grid.rows.getRow((currentRowIndex + span) - 1).isRowHeightSet)) {\n // this.row.grid.rows.getRow((currentRowIndex + span) - 1).cells.getCell(cellIndex).rowSpanRemainingHeight = this.row.cells.getCell(cellIndex).height - totalHeight;\n // totalHeight = this.row.cells.getCell(cellIndex).height;\n // bounds.height = totalHeight;\n // } else {\n bounds.height = totalHeight;\n // }\n if (!this.row.rowMergeComplete) {\n bounds.height = totalHeight;\n }\n }\n return bounds;\n };\n /* tslint:enable */\n /**\n * Gets the `text font`.\n * @private\n */\n PdfGridCell.prototype.getTextFont = function () {\n if (typeof this.style.font !== 'undefined' && this.style.font != null) {\n return this.style.font;\n }\n else if (typeof this.row.style.font !== 'undefined' && this.row.style.font != null) {\n return this.row.style.font;\n }\n else if (typeof this.row.grid.style.font !== 'undefined' && this.row.grid.style.font != null) {\n return this.row.grid.style.font;\n }\n else {\n return PdfDocument.defaultFont;\n }\n };\n /**\n * Gets the `text brush`.\n * @private\n */\n PdfGridCell.prototype.getTextBrush = function () {\n if (typeof this.style.textBrush !== 'undefined' && this.style.textBrush != null) {\n return this.style.textBrush;\n }\n else if (typeof this.row.style.textBrush !== 'undefined' && this.row.style.textBrush != null) {\n return this.row.style.textBrush;\n }\n else {\n return this.row.grid.style.textBrush;\n }\n };\n /**\n * Gets the `text pen`.\n * @private\n */\n PdfGridCell.prototype.getTextPen = function () {\n if (typeof this.style.textPen !== 'undefined' && this.style.textPen != null) {\n return this.style.textPen;\n }\n else if (typeof this.row.style.textPen !== 'undefined' && this.row.style.textPen != null) {\n return this.row.style.textPen;\n }\n else {\n return this.row.grid.style.textPen;\n }\n };\n /**\n * Gets the `background brush`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundBrush = function () {\n if (typeof this.style.backgroundBrush !== 'undefined' && this.style.backgroundBrush != null) {\n return this.style.backgroundBrush;\n }\n else if (typeof this.row.style.backgroundBrush !== 'undefined' && this.row.style.backgroundBrush != null) {\n return this.row.style.backgroundBrush;\n }\n else {\n return this.row.grid.style.backgroundBrush;\n }\n };\n /**\n * Gets the `background image`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundImage = function () {\n if (typeof this.style.backgroundImage !== 'undefined' && this.style.backgroundImage != null) {\n return this.style.backgroundImage;\n }\n else if (typeof this.row.style.backgroundImage !== 'undefined' && this.row.style.backgroundImage != null) {\n return this.row.style.backgroundImage;\n }\n else {\n return this.row.grid.style.backgroundImage;\n }\n };\n /**\n * Gets the current `StringFormat`.\n * @private\n */\n PdfGridCell.prototype.getStringFormat = function () {\n if (typeof this.style.stringFormat !== 'undefined' && this.style.stringFormat != null) {\n return this.style.stringFormat;\n }\n else {\n return this.stringFormat;\n }\n };\n /**\n * Calculates the `height`.\n * @private\n */\n PdfGridCell.prototype.measureHeight = function () {\n // .. Calculate the cell text height.\n // .....Add border widths, cell spacings and paddings to the height.\n var width = this.calculateWidth();\n // //check whether the Current PdfGridCell has padding\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n //width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n var height = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var currentValue = this.objectValue;\n /* tslint:disable */\n if (!this.isFinish)\n currentValue = !(this.remaining === null || this.remaining === '' ||\n typeof this.remaining === 'undefined') ? this.remaining : this.objectValue;\n var slr = null;\n var cellIndex = this.row.cells.indexOf(this);\n if (this.gridRow.grid.style.cellSpacing != 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n }\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n if (this.gridRow.grid.isChildGrid) {\n if (width < 0) {\n this.tempval = width;\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n this.tempval += (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n this.tempval += (this.style.cellPadding.right + this.style.cellPadding.left);\n this.tempval += (this.style.borders.left.width + this.style.borders.right.width);\n }\n }\n else {\n this.tempval = width;\n }\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(this.tempval, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n else {\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n }\n /* tslint:enable */\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n var cellIndex = this.row.cells.indexOf(this);\n var internalWidth = 0;\n if ((this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n internalWidth -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n internalWidth -= this.style.cellPadding.right;\n }\n }\n else if ((this.row.grid.style.cellPadding != null || typeof this.row.grid.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n internalWidth -= this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n internalWidth -= this.row.grid.style.cellPadding.right;\n }\n }\n else {\n internalWidth = this.calculateWidth();\n }\n this.objectValue.tempWidth = internalWidth;\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n height = this.objectValue.size.height;\n }\n else {\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n if (this.gridRow.grid.style.cellSpacing !== 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n //height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (this.row.grid.style.cellPadding.hasBottomPad && typeof this.row.grid.style.cellPadding.bottom !== 'undefined') {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n height += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n height += this.objectValue.height;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n /* tslint:disable */\n var slr = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n height += slr.actualSize.height;\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (typeof this.objectValue === 'undefined') {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n //Add padding top and bottom value to height\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n else {\n height += (this.style.cellPadding.top + this.style.cellPadding.bottom);\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (typeof this.row.grid.style.cellPadding.bottom !== 'undefined' && this.row.grid.style.cellPadding.hasBottomPad) {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n height += this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n height += this.style.cellPadding.bottom;\n }\n }\n }\n height += this.row.grid.style.cellSpacing;\n return height;\n };\n /**\n * return the calculated `width` of the cell.\n * @private\n */\n PdfGridCell.prototype.calculateWidth = function () {\n var cellIndex = this.row.cells.indexOf(this);\n var rowindex = this.row.grid.rows.rowCollection.indexOf(this.row);\n var columnSpan = this.columnSpan;\n var width = 0;\n if (columnSpan === 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n }\n }\n else if (columnSpan > 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n if ((i + 1) < columnSpan) {\n this.row.cells.getCell(cellIndex + i + 1).hasColSpan = true;\n }\n }\n }\n if (this.parent != null && this.parent.row.width > 0) {\n if ((this.row.grid.isChildGrid) && this.parent != null && (this.row.width > this.parent.row.width)) {\n width = 0;\n for (var j = 0; j < this.parent.columnSpan; j++) {\n width += this.parent.row.grid.columns.getColumn(j).width;\n }\n width = width / this.row.cells.count;\n }\n }\n return width;\n };\n return PdfGridCell;\n}());\nexport { PdfGridCell };\n/**\n * `PdfGridCellCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridCell' objects.\n * @private\n */\nvar PdfGridCellCollection = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridCellCollection` class with the row.\n * @private\n */\n function PdfGridCellCollection(row) {\n /**\n * @hidden\n * @private\n */\n this.cells = [];\n this.gridRow = row;\n }\n //Properties\n /**\n * Gets the current `cell`.\n * @private\n */\n PdfGridCellCollection.prototype.getCell = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException');\n }\n return this.cells[index];\n };\n Object.defineProperty(PdfGridCellCollection.prototype, \"count\", {\n /**\n * Gets the cells `count`.[Read-Only].\n * @private\n */\n get: function () {\n return this.cells.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridCellCollection.prototype.add = function (cell) {\n if (typeof cell === 'undefined') {\n var tempcell = new PdfGridCell();\n this.add(tempcell);\n return cell;\n }\n else {\n cell.row = this.gridRow;\n this.cells.push(cell);\n }\n };\n /**\n * Returns the `index of` a particular cell in the collection.\n * @private\n */\n PdfGridCellCollection.prototype.indexOf = function (cell) {\n return this.cells.indexOf(cell);\n };\n return PdfGridCellCollection;\n}());\nexport { PdfGridCellCollection };\n","import { PdfGridCell } from './pdf-grid-cell';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\n/**\n * `PdfGridColumn` class represents the schema of a column in a 'PdfGrid'.\n */\nvar PdfGridColumn = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumn` class with the parent grid.\n * @private\n */\n function PdfGridColumn(grid) {\n /**\n * The `width` of the column.\n * @default 0\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n }\n Object.defineProperty(PdfGridColumn.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the 'PdfGridColumn'.\n * @private\n */\n get: function () {\n return this.columnWidth;\n },\n set: function (value) {\n this.isCustomWidth = true;\n this.columnWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumn.prototype, \"format\", {\n /**\n * Gets or sets the information about the text `formatting`.\n * @private\n */\n get: function () {\n if (this.stringFormat == null) {\n this.stringFormat = new PdfStringFormat(); //GetDefaultFormat();\n }\n return this.stringFormat;\n },\n set: function (value) {\n this.stringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridColumn;\n}());\nexport { PdfGridColumn };\n/**\n * `PdfGridColumnCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridColumn' objects.\n * @private\n */\nvar PdfGridColumnCollection = /** @class */ (function () {\n //properties\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumnCollection` class with the parent grid.\n * @private\n */\n function PdfGridColumnCollection(grid) {\n /**\n * @hidden\n * @private\n */\n this.internalColumns = [];\n /**\n * @hidden\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n this.internalColumns = [];\n }\n //Iplementation\n /**\n * `Add` a new column to the 'PdfGrid'.\n * @private\n */\n PdfGridColumnCollection.prototype.add = function (count) {\n // public add(column : PdfGridColumn) : void\n // public add(arg : number|PdfGridColumn) : void {\n // if (typeof arg === 'number') {\n for (var i = 0; i < count; i++) {\n this.internalColumns.push(new PdfGridColumn(this.grid));\n for (var index = 0; index < this.grid.rows.count; index++) {\n var row = this.grid.rows.getRow(index);\n var cell = new PdfGridCell();\n cell.value = '';\n row.cells.add(cell);\n }\n }\n // } else {\n // let column : PdfGridColumn = new PdfGridColumn(this.grid);\n // this.columns.push(column);\n // return column;\n // }\n };\n Object.defineProperty(PdfGridColumnCollection.prototype, \"count\", {\n /**\n * Gets the `number of columns` in the 'PdfGrid'.[Read-Only].\n * @private\n */\n get: function () {\n return this.internalColumns.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"width\", {\n /**\n * Gets the `widths`.\n * @private\n */\n get: function () {\n if (this.columnWidth === 0) {\n this.columnWidth = this.measureColumnsWidth();\n }\n if (this.grid.initialWidth !== 0 && this.columnWidth !== this.grid.initialWidth && !this.grid.style.allowHorizontalOverflow) {\n this.columnWidth = this.grid.initialWidth;\n this.grid.isPageWidth = true;\n }\n return this.columnWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"columns\", {\n /**\n * Gets the `array of PdfGridColumn`.[Read-Only]\n * @private\n */\n get: function () {\n return this.internalColumns;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `PdfGridColumn` from the specified index.[Read-Only]\n * @private\n */\n PdfGridColumnCollection.prototype.getColumn = function (index) {\n if (index >= 0 && index <= this.columns.length) {\n return this.columns[index];\n }\n else {\n throw Error('can not get the column from the index: ' + index);\n }\n };\n //Implementation\n /**\n * `Calculates the column widths`.\n * @private\n */\n PdfGridColumnCollection.prototype.measureColumnsWidth = function () {\n var totalWidth = 0;\n this.grid.measureColumnsWidth();\n for (var i = 0, count = this.internalColumns.length; i < count; i++) {\n totalWidth += this.internalColumns[i].width;\n }\n return totalWidth;\n };\n /**\n * Gets the `widths of the columns`.\n * @private\n */\n PdfGridColumnCollection.prototype.getDefaultWidths = function (totalWidth) {\n var widths = [];\n var summ = 0.0;\n var subFactor = this.count;\n for (var i = 0; i < this.count; i++) {\n if (this.grid.isPageWidth && totalWidth >= 0 && !this.internalColumns[i].isCustomWidth) {\n this.internalColumns[i].width = 0;\n }\n else {\n widths[i] = this.internalColumns[i].width;\n if (this.internalColumns[i].width > 0 && this.internalColumns[i].isCustomWidth) {\n totalWidth -= this.internalColumns[i].width;\n subFactor--;\n }\n else {\n widths[i] = 0;\n }\n }\n }\n for (var i = 0; i < this.count; i++) {\n var width = totalWidth / subFactor;\n if (widths[i] <= 0) {\n widths[i] = width;\n }\n }\n return widths;\n };\n return PdfGridColumnCollection;\n}());\nexport { PdfGridColumnCollection };\n","import { PdfGridCell, PdfGridCellCollection } from './pdf-grid-cell';\nimport { PdfGridRowStyle } from './styles/style';\n/**\n * `PdfGridRow` class provides customization of the settings for the particular row.\n */\nvar PdfGridRow = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridRow` class with the parent grid.\n * @private\n */\n function PdfGridRow(grid) {\n /**\n * Stores the index of the overflowing row.\n * @private\n */\n this.gridRowOverflowIndex = 0;\n /**\n * The `height` of the row.\n * @private\n */\n this.rowHeight = 0;\n /**\n * The `width` of the row.\n * @private\n */\n this.rowWidth = 0;\n /**\n * The `isFinish` of the row.\n * @private\n */\n this.isrowFinish = false;\n /**\n * Check whether the Row span row height `is set explicitly`.\n * @default false\n * @public\n */\n this.isRowSpanRowHeightSet = false;\n /**\n * The `page count` of the row.\n * @public\n */\n this.noOfPageCount = 0;\n /**\n * Check whether the row height `is set explicitly`.\n * @default false\n * @private\n */\n this.isRowHeightSet = false;\n this.isPageBreakRowSpanApplied = false;\n /**\n * Check weather the row merge `is completed` or not.\n * @default true\n * @private\n */\n this.isRowMergeComplete = true;\n this.repeatFlag = false;\n this.rowFontSplit = false;\n this.isHeaderRow = false;\n this.pdfGrid = grid;\n }\n Object.defineProperty(PdfGridRow.prototype, \"rowSpanExists\", {\n //Properties\n /**\n * Gets or sets a value indicating [`row span exists`].\n * @private\n */\n get: function () {\n return this.bRowSpanExists;\n },\n set: function (value) {\n this.bRowSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"cells\", {\n /**\n * Gets the `cells` from the selected row.[Read-Only].\n * @private\n */\n get: function () {\n if (this.gridCells == null) {\n this.gridCells = new PdfGridCellCollection(this);\n }\n return this.gridCells;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"grid\", {\n /**\n * Gets or sets the parent `grid`.\n * @private\n */\n get: function () {\n return this.pdfGrid;\n },\n set: function (value) {\n this.pdfGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"style\", {\n /**\n * Gets or sets the row `style`.\n * @private\n */\n get: function () {\n if (typeof this.rowStyle === 'undefined') {\n this.rowStyle = new PdfGridRowStyle();\n this.rowStyle.setParent(this);\n }\n return this.rowStyle;\n },\n set: function (value) {\n this.rowStyle = value;\n for (var i = 0; i < this.cells.count; i++) {\n this.cells.getCell(i).style.borders = value.border;\n if (typeof value.font !== 'undefined') {\n this.cells.getCell(i).style.font = value.font;\n }\n if (typeof value.backgroundBrush !== 'undefined') {\n this.cells.getCell(i).style.backgroundBrush = value.backgroundBrush;\n }\n if (typeof value.backgroundImage !== 'undefined') {\n this.cells.getCell(i).style.backgroundImage = value.backgroundImage;\n }\n if (typeof value.textBrush !== 'undefined') {\n this.cells.getCell(i).style.textBrush = value.textBrush;\n }\n if (typeof value.textPen !== 'undefined') {\n this.cells.getCell(i).style.textPen = value.textPen;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowBreakHeight\", {\n /**\n * `Height` of the row yet to be drawn after split.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBreakHeight === 'undefined') {\n this.gridRowBreakHeight = 0;\n }\n return this.gridRowBreakHeight;\n },\n set: function (value) {\n this.gridRowBreakHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowOverflowIndex\", {\n /**\n * `over flow index` of the row.\n * @private\n */\n get: function () {\n return this.gridRowOverflowIndex;\n },\n set: function (value) {\n this.gridRowOverflowIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the row.\n * @private\n */\n get: function () {\n if (!this.isRowHeightSet) {\n this.rowHeight = this.measureHeight();\n }\n return this.rowHeight;\n },\n set: function (value) {\n this.rowHeight = value;\n this.isRowHeightSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the row.\n * @private\n */\n get: function () {\n if (this.rowWidth === 0 || typeof this.rowWidth === 'undefined') {\n this.rowWidth = this.measureWidth();\n }\n return this.rowWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"NestedGridLayoutResult\", {\n /**\n * Gets or sets the row `Nested grid Layout Result`.\n * @private\n */\n get: function () {\n return this.gridResult;\n },\n set: function (value) {\n this.gridResult = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"columnSpanExists\", {\n /**\n * Gets or sets a value indicating [`column span exists`].\n * @private\n */\n get: function () {\n return this.bColumnSpanExists;\n },\n set: function (value) {\n this.bColumnSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowMergeComplete\", {\n /**\n * Check whether the Row `has row span or row merge continue`.\n * @private\n */\n get: function () {\n return this.isRowMergeComplete;\n },\n set: function (value) {\n this.isRowMergeComplete = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowIndex\", {\n /**\n * Returns `index` of the row.\n * @private\n */\n get: function () {\n return this.grid.rows.rowCollection.indexOf(this);\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the height`.\n * @private\n */\n PdfGridRow.prototype.measureHeight = function () {\n var rowSpanRemainingHeight = 0;\n var rowHeight;\n var maxHeight = 0;\n if (this.cells.getCell(0).rowSpan > 1) {\n rowHeight = 0;\n }\n else {\n rowHeight = this.cells.getCell(0).height;\n }\n for (var i = 0; i < this.cells.count; i++) {\n var cell = this.cells.getCell(i);\n //get the maximum rowspan remaining height.\n if (cell.rowSpanRemainingHeight > rowSpanRemainingHeight) {\n rowSpanRemainingHeight = cell.rowSpanRemainingHeight;\n }\n //skip the cell if row spanned.\n // if (cell.isRowMergeContinue) {\n // continue;\n // }\n // if (!cell.isRowMergeContinue) {\n // this.rowMergeComplete = false;\n // }\n this.rowMergeComplete = false;\n if (cell.rowSpan > 1) {\n var cellIn = i;\n var rowin = this.isHeaderRow ? this.grid.headers.indexOf(this) : this.grid.rows.rowCollection.indexOf(this);\n for (var j = 0; j < cell.rowSpan; j++) {\n if ((j + 1) < cell.rowSpan) {\n (this.isHeaderRow ? this.grid.headers.getHeader(rowin + j + 1) : this.grid.rows.getRow(rowin + j + 1)).cells.getCell(cellIn).hasRowSpan = true;\n }\n }\n if (maxHeight < cell.height) {\n maxHeight = cell.height;\n }\n continue;\n }\n rowHeight = Math.max(rowHeight, cell.height);\n }\n if (maxHeight > rowHeight) {\n rowHeight = maxHeight;\n }\n if (rowHeight === 0) {\n rowHeight = maxHeight;\n }\n else if (rowSpanRemainingHeight > 0) {\n rowHeight += rowSpanRemainingHeight;\n }\n return rowHeight;\n };\n PdfGridRow.prototype.measureWidth = function () {\n var rowWid = 0;\n for (var i = 0; i < this.grid.columns.count; i++) {\n var column = this.grid.columns.getColumn(i);\n rowWid += column.width;\n }\n return rowWid;\n };\n return PdfGridRow;\n}());\nexport { PdfGridRow };\n/**\n * `PdfGridRowCollection` class provides access to an ordered, strongly typed collection of 'PdfGridRow' objects.\n * @private\n */\nvar PdfGridRowCollection = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowCollection` class with the parent grid.\n * @private\n */\n function PdfGridRowCollection(grid) {\n this.rows = [];\n this.grid = grid;\n }\n Object.defineProperty(PdfGridRowCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the number of header in the `PdfGrid`.[Read-Only].\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRowCollection.prototype, \"rowCollection\", {\n //Implementation\n /**\n * Return the row collection of the `grid`.\n * @private\n */\n get: function () {\n return this.rows;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowCollection.prototype.addRow = function (arg) {\n if (typeof arg === 'undefined') {\n var temprow = new PdfGridRow(this.grid);\n this.addRow(temprow);\n return temprow;\n }\n else {\n arg.style.setBackgroundBrush(this.grid.style.backgroundBrush);\n arg.style.setFont(this.grid.style.font);\n arg.style.setTextBrush(this.grid.style.textBrush);\n arg.style.setTextPen(this.grid.style.textPen);\n if (arg.cells.count === 0) {\n for (var i = 0; i < this.grid.columns.count; i++) {\n arg.cells.add(new PdfGridCell());\n }\n }\n this.rows.push(arg);\n }\n };\n /**\n * Return the row by index.\n * @private\n */\n PdfGridRowCollection.prototype.getRow = function (index) {\n return this.rows[index];\n };\n return PdfGridRowCollection;\n}());\nexport { PdfGridRowCollection };\n/**\n * `PdfGridHeaderCollection` class provides customization of the settings for the header.\n * @private\n */\nvar PdfGridHeaderCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfGridHeaderCollection` class with the parent grid.\n * @private\n */\n function PdfGridHeaderCollection(grid) {\n /**\n * The array to store the `rows` of the grid header.\n * @private\n */\n this.rows = [];\n this.grid = grid;\n this.rows = [];\n }\n //Properties\n /**\n * Gets a 'PdfGridRow' object that represents the `header` row in a 'PdfGridHeaderCollection' control.[Read-Only].\n * @private\n */\n PdfGridHeaderCollection.prototype.getHeader = function (index) {\n // if (index < 0 || index >= Count) {\n // throw new IndexOutOfRangeException();\n // }\n return (this.rows[index]);\n };\n Object.defineProperty(PdfGridHeaderCollection.prototype, \"count\", {\n /**\n * Gets the `number of header` in the 'PdfGrid'.[Read-Only]\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridHeaderCollection.prototype.add = function (arg) {\n if (typeof arg === 'number') {\n var row = void 0;\n for (var i = 0; i < arg; i++) {\n row = new PdfGridRow(this.grid);\n row.isHeaderRow = true;\n for (var j = 0; j < this.grid.columns.count; j++) {\n row.cells.add(new PdfGridCell());\n }\n this.rows.push(row);\n }\n return this.rows;\n }\n else {\n this.rows.push(arg);\n }\n };\n PdfGridHeaderCollection.prototype.indexOf = function (row) {\n return this.rows.indexOf(row);\n };\n return PdfGridHeaderCollection;\n}());\nexport { PdfGridHeaderCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * PdfGrid.ts class for EJ2-PDF\n */\nimport { PdfGridColumnCollection } from './pdf-grid-column';\nimport { PdfGridRowCollection, PdfGridHeaderCollection } from './pdf-grid-row';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutElement } from './../../graphics/figures/layout-element';\nimport { PdfLayoutFormat } from './../../graphics/figures/base/element-layouter';\nimport { PdfGridStyle } from './styles/style';\nimport { PdfBorders } from './styles/pdf-borders';\nimport { PdfGridLayouter } from './../../structured-elements/grid/layout/grid-layouter';\nvar PdfGrid = /** @class */ (function (_super) {\n __extends(PdfGrid, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGrid() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n /**\n * Check the child grid is ' split or not'\n */\n _this.isGridSplit = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.splitChildRowIndex = -1;\n /**\n * The event raised on `begin cell lay outing`.\n * @event\n * @private\n */\n //public beginPageLayout : Function;\n /**\n * The event raised on `end cell lay outing`.\n * @event\n * @private\n */\n //public endPageLayout : Function;\n _this.hasRowSpanSpan = false;\n _this.hasColumnSpan = false;\n _this.isSingleGrid = true;\n return _this;\n }\n Object.defineProperty(PdfGrid.prototype, \"raiseBeginCellDraw\", {\n //Properties\n /**\n * Gets a value indicating whether the `start cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginCellDraw !== 'undefined' && typeof this.beginCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"raiseEndCellDraw\", {\n /**\n * Gets a value indicating whether the `end cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endCellDraw !== 'undefined' && typeof this.endCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"repeatHeader\", {\n /**\n * Gets or sets a value indicating whether to `repeat header`.\n * @private\n */\n get: function () {\n if (this.bRepeatHeader == null || typeof this.bRepeatHeader === 'undefined') {\n this.bRepeatHeader = false;\n }\n return this.bRepeatHeader;\n },\n set: function (value) {\n this.bRepeatHeader = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"allowRowBreakAcrossPages\", {\n /**\n * Gets or sets a value indicating whether to split or cut rows that `overflow a page`.\n * @private\n */\n get: function () {\n return this.breakRow;\n },\n set: function (value) {\n this.breakRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"columns\", {\n /**\n * Gets the `column` collection of the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridColumns == null || typeof this.gridColumns === 'undefined') {\n this.gridColumns = new PdfGridColumnCollection(this);\n }\n return this.gridColumns;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"rows\", {\n /**\n * Gets the `row` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridRows == null) {\n this.gridRows = new PdfGridRowCollection(this);\n }\n return this.gridRows;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"headers\", {\n /**\n * Gets the `headers` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridHeaders == null || typeof this.gridHeaders === 'undefined') {\n this.gridHeaders = new PdfGridHeaderCollection(this);\n }\n return this.gridHeaders;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"initialWidth\", {\n /**\n * Indicating `initial width` of the page.\n * @private\n */\n get: function () {\n return this.gridInitialWidth;\n },\n set: function (value) {\n this.gridInitialWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"style\", {\n /**\n * Gets or sets the `grid style`.\n * @private\n */\n get: function () {\n if (this.gridStyle == null) {\n this.gridStyle = new PdfGridStyle();\n }\n return this.gridStyle;\n },\n set: function (value) {\n if (this.gridStyle == null) {\n this.gridStyle = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isPageWidth\", {\n /**\n * Gets a value indicating whether the grid column width is considered to be `page width`.\n * @private\n */\n get: function () {\n return this.ispageWidth;\n },\n set: function (value) {\n this.ispageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isChildGrid\", {\n /**\n * Gets or set if grid `is nested grid`.\n * @private\n */\n get: function () {\n return this.ischildGrid;\n },\n set: function (value) {\n this.ischildGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"size\", {\n /**\n * Gets or set if grid ' is split or not'\n * @public\n */\n // public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }\n /**\n * Gets the `size`.\n * @private\n */\n get: function () {\n if ((this.gridSize.width === 0 || typeof this.gridSize.width === 'undefined') && this.gridSize.height === 0) {\n this.gridSize = this.measure();\n }\n return this.gridSize;\n // } else {\n // return this.gridSize;\n // }\n },\n set: function (value) {\n this.gridSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"ParentCell\", {\n get: function () {\n return this.parentCell;\n },\n set: function (value) {\n this.parentCell = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"LayoutFormat\", {\n get: function () {\n return this.layoutFormat;\n },\n enumerable: true,\n configurable: true\n });\n PdfGrid.prototype.draw = function (arg1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2.x, arg2.y);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg1, arg2, arg3, null);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\n }\n else if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null)) {\n var width = (arg1.graphics.clientSize.width - arg2);\n var layoutRectangle = new RectangleF(arg2, arg3, width, 0);\n return this.drawHelper(arg1, layoutRectangle, arg4);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'boolean') {\n return this.drawHelper(arg1, arg2, null);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n };\n /**\n * `measures` this instance.\n * @private\n */\n PdfGrid.prototype.measure = function () {\n var height = 0;\n var width = this.columns.width;\n for (var i = 0; i < this.headers.count; i++) {\n var row = this.headers.getHeader(i);\n height += row.height;\n }\n for (var i = 0; i < this.rows.count; i++) {\n var row = this.rows.getRow(i);\n height += row.height;\n }\n return new SizeF(width, height);\n };\n PdfGrid.prototype.onBeginCellDraw = function (args) {\n if (this.raiseBeginCellDraw) {\n this.beginCellDraw(this, args);\n }\n };\n PdfGrid.prototype.onEndCellDraw = function (args) {\n if (this.raiseEndCellDraw) {\n this.endCellDraw(this, args);\n }\n };\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n PdfGrid.prototype.layout = function (param) {\n var width = param.bounds.width;\n var height = param.bounds.height;\n var hasChanged = false;\n if (typeof param.bounds.width === 'undefined' || param.bounds.width === 0) {\n width = param.page.getClientSize().width - param.bounds.x;\n hasChanged = true;\n }\n if (typeof param.bounds.height === 'undefined' || param.bounds.height === 0) {\n height = param.page.getClientSize().height - param.bounds.y;\n hasChanged = true;\n }\n if (hasChanged) {\n param.bounds = new RectangleF(param.bounds.x, param.bounds.y, width, height);\n }\n if (this.rows.count !== 0) {\n var currentRow = this.rows.getRow(0).cells.getCell(0).style;\n if (currentRow.borders != null && ((currentRow.borders.left != null && currentRow.borders.left.width !== 1) ||\n (currentRow.borders.top != null && currentRow.borders.top.width !== 1))) {\n var x = currentRow.borders.left.width / 2;\n var y = currentRow.borders.top.width / 2;\n if (param.bounds.x === PdfBorders.default.right.width / 2 && param.bounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.gridSize.width, this.gridSize.height);\n param.bounds = newBound;\n }\n }\n }\n this.setSpan();\n this.checkSpan();\n this.layoutFormat = param.format;\n this.gridLocation = param.bounds;\n var layouter = new PdfGridLayouter(this);\n var result = (layouter.Layouter(param));\n return result;\n };\n PdfGrid.prototype.setSpan = function () {\n var colSpan = 1;\n var rowSpan = 1;\n var currentCellIndex = 0;\n var currentRowIndex = 0;\n var maxSpan = 0;\n var rowCount = this.headers.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.headers.getHeader(i);\n maxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.headers.count) {\n throw new Error('Invalid span specified at Header ' + j.toString() + ' column ' + i.toString());\n }\n // if (this.rows.count !== 0 && cell.rowSpan + i > this.rows.count) {\n // throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n // }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n colSpan = cell.columnSpan;\n rowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n row.cells.getCell(currentCellIndex).rowSpan = rowSpan;\n colSpan--;\n }\n currentCellIndex = j;\n colSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n rowSpan--;\n while (colSpan > 1) {\n currentCellIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n colSpan--;\n }\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n colSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n rowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n rowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = maxSpan;\n }\n };\n PdfGrid.prototype.checkSpan = function () {\n var cellcolSpan;\n var cellrowSpan = 1;\n var cellmaxSpan = 0;\n var currentCellIndex;\n var currentRowIndex = 0;\n cellcolSpan = cellrowSpan = 1;\n currentCellIndex = currentRowIndex = 0;\n if (this.hasRowSpanSpan || this.hasColumnSpan) {\n var rowCount = this.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.rows.getRow(i);\n cellmaxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cellmaxSpan = Math.max(cellmaxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue\n && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.rows.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n cellcolSpan = cell.columnSpan;\n cellrowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n currentCellIndex = j;\n cellcolSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellrowSpan--;\n while (cellcolSpan > 1) {\n currentCellIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n cellcolSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n cellrowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n cellrowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = cellmaxSpan;\n }\n }\n };\n PdfGrid.prototype.measureColumnsWidth = function (bounds) {\n if (typeof bounds !== 'undefined') {\n this.isPageWidth = false;\n var widths = this.columns.getDefaultWidths(bounds.width - bounds.x);\n //let tempWidth : number = this.columns.getColumn(0).width;\n for (var i = 0, count = this.columns.count; i < count; i++) {\n // if (this.columns.getColumn(i).width < 0)\n // this.columns.getColumn(i).columnWidth = widths[i];\n // else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth && widths[i]>0 && this.isComplete)\n this.columns.getColumn(i).columnWidth = widths[i];\n this.tempWidth = widths[i];\n }\n if (this.ParentCell != null && this.style.allowHorizontalOverflow == false && this.ParentCell.row.grid.style.allowHorizontalOverflow == false) {\n var padding = 0;\n var columnWidth = 0;\n var columnCount = this.columns.count;\n var childGridColumnWidth = 0;\n if (this.ParentCell.style.cellPadding != null || typeof this.ParentCell.style.cellPadding !== 'undefined') {\n if (typeof this.ParentCell.style.cellPadding.left != 'undefined' && this.ParentCell.style.cellPadding.hasLeftPad) {\n padding += this.ParentCell.style.cellPadding.left;\n }\n if (typeof this.ParentCell.style.cellPadding.right != 'undefined' && this.ParentCell.style.cellPadding.hasRightPad) {\n padding += this.ParentCell.style.cellPadding.right;\n }\n }\n for (var i = 0; i < this.ParentCell.columnSpan; i++) {\n columnWidth += this.ParentCell.row.grid.columns.getColumn(this.parentCellIndex + i).width;\n }\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n columnWidth -= this.gridColumns.getColumn(j).width;\n columnCount--;\n }\n }\n if ((this.ParentCell.row.grid.style.cellPadding != null || typeof this.ParentCell.row.grid.style.cellPadding != 'undefined')) {\n if (typeof this.ParentCell.row.grid.style.cellPadding.top != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasTopPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.top;\n }\n if (typeof this.ParentCell.row.grid.style.cellPadding.bottom != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasBottomPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n columnWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n if (columnWidth > padding) {\n childGridColumnWidth = (columnWidth - padding) / columnCount;\n this.tempWidth = childGridColumnWidth;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColumnWidth;\n }\n }\n }\n }\n // if (this.ParentCell != null && this.ParentCell.row.width > 0)\n // {\n // if (this.isChildGrid && this.gridSize.width > this.ParentCell.row.width)\n // {\n // widths = this.columns.getDefaultWidths(bounds.width);\n // for (let i : number = 0; i < this.columns.count; i++)\n // {\n // this.columns.getColumn(i).width = widths[i];\n // }\n // }\n // }\n }\n else {\n var widths = [this.columns.count];\n for (var n = 0; n < this.columns.count; n++) {\n widths[n] = 0;\n }\n var cellWidth = 0;\n var cellWidths = 0;\n if ((typeof this.isChildGrid === 'undefined' && typeof this.gridLocation !== 'undefined') || (this.isChildGrid === null && typeof this.gridLocation !== 'undefined')) {\n this.initialWidth = this.gridLocation.width;\n }\n if (this.headers.count > 0) {\n var colCount_1 = this.headers.getHeader(0).cells.count;\n var rowCount = this.headers.count;\n for (var i = 0; i < colCount_1; i++) {\n cellWidth = 0;\n for (var j = 0; j < rowCount; j++) {\n var rowWidth = Math.min(this.initialWidth, this.headers.getHeader(j).cells.getCell(i).width);\n cellWidth = Math.max(cellWidth, rowWidth);\n }\n widths[i] = cellWidth;\n }\n }\n // else {\n // let colCount : number = this.rows.getRow(0).cells.count;\n // let rowCount : number = this.rows.count;\n // for (let i : number = 0; i < colCount; i++) {\n // cellWidth = 0;\n // for (let j : number = 0; j < rowCount; j++) {\n // let rowWidth : number = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n // cellWidth = Math.max(cellWidth, rowWidth);\n // }\n // widths[i] = cellWidth;\n // }\n // }\n cellWidth = 0;\n for (var i = 0, colCount_2 = this.columns.count; i < colCount_2; i++) {\n for (var j = 0, rowCount = this.rows.count; j < rowCount; j++) {\n if ((this.rows.getRow(j).cells.getCell(i).columnSpan == 1 && !this.rows.getRow(j).cells.getCell(i).isCellMergeContinue) || this.rows.getRow(j).cells.getCell(i).value != null) {\n if (this.rows.getRow(j).cells.getCell(i).value != null && !this.rows.getRow(j).grid.style.allowHorizontalOverflow) {\n var value = this.rows.getRow(j).grid.style.cellPadding.right +\n this.rows.getRow(j).grid.style.cellPadding.left\n + this.rows.getRow(j).cells.getCell(i).style.borders.left.width / 2;\n // if (this.initialWidth != 0 )\n // (this.rows.getRow(j).cells.getCell(i).value as PdfGrid).initialWidth = this.initialWidth - value;\n }\n var rowWidth = 0;\n rowWidth = this.initialWidth > 0.0 ? Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width) : this.rows.getRow(j).cells.getCell(i).width;\n // let internalWidth : number = this.rows.getRow(j).cells.getCell(i).width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.left.width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.right.width;\n // let internalHeight : number = this.rows.getRow(j).cells.getCell(i).height;\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.top.width);\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.bottom.width);\n // let isCorrectWidth : boolean = (internalWidth + this.gridLocation.x) > this.currentGraphics.clientSize.width;\n // let isCorrectHeight : boolean = (internalHeight + this.gridLocation.y) > this.currentGraphics.clientSize.height;\n // if (isCorrectWidth || isCorrectHeight) {\n // throw Error('Image size exceeds client size of the page. Can not insert this image');\n // }\n // rowWidth = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n cellWidth = Math.max(widths[i], Math.max(cellWidth, rowWidth));\n cellWidth = Math.max(this.columns.getColumn(i).width, cellWidth);\n }\n }\n if (this.rows.count != 0)\n widths[i] = cellWidth;\n cellWidth = 0;\n }\n for (var i = 0, RowCount = this.rows.count; i < RowCount; i++) {\n for (var j = 0, ColCount = this.columns.count; j < ColCount; j++) {\n if (this.rows.getRow(i).cells.getCell(j).columnSpan > 1) {\n var total = widths[j];\n for (var k = 1; k < this.rows.getRow(i).cells.getCell(j).columnSpan; k++) {\n total += widths[j + k];\n }\n // if (this.rows.getRow(i).cells.getCell(j).width > total)\n // {\n // let extendedWidth : number = this.rows.getRow(i).cells.getCell(j).width - total;\n // extendedWidth = extendedWidth / this.rows.getRow(i).cells.getCell(j).columnSpan;\n // for (let k : number = j; k < j + this.rows.getRow(i).cells.getCell(j).columnSpan; k++)\n // widths[k] += extendedWidth;\n // }\n }\n }\n }\n // if (this.isChildGrid && this.initialWidth != 0)\n // {\n // widths = this.columns.getDefaultWidths(this.initialWidth);\n // }\n for (var i = 0, count = this.columns.count; i < count; i++) {\n if (this.columns.getColumn(i).width <= 0)\n this.columns.getColumn(i).columnWidth = widths[i];\n else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth)\n this.columns.getColumn(i).columnWidth = widths[i];\n }\n var padding = 0;\n var colWidth = 0;\n var colCount = this.columns.count;\n var childGridColWidth = 0;\n colWidth = this.tempWidth;\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n colWidth -= this.gridColumns.getColumn(j).width;\n colCount--;\n }\n }\n // if (this.style.cellSpacing != 0){\n // colWidth -= this.style.cellSpacing * 2;\n // }\n if (colWidth > 0) {\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n colWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n }\n if (colWidth > padding) {\n childGridColWidth = (colWidth) / colCount;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColWidth;\n }\n }\n }\n }\n };\n return PdfGrid;\n}(PdfLayoutElement));\nexport { PdfGrid };\n","/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\nimport { PdfDockStyle, PdfAlignmentStyle, TemplateType } from './enum';\nimport { PointF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTemplate } from './../graphics/figures/pdf-template';\nimport { PdfPage } from './pdf-page';\nimport { RectangleF } from './../drawing/pdf-drawing';\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nvar PdfPageTemplateElement = /** @class */ (function () {\n /* tslint:disable */\n function PdfPageTemplateElement(arg1, arg2, arg3, arg4, arg5) {\n if (arg1 instanceof RectangleF && typeof arg2 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, null);\n }\n else if (arg1 instanceof RectangleF && arg2 instanceof PdfPage && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, arg2);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, null);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, arg3);\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.InitiateBounds(0, 0, arg1.width, arg1.height, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, arg3);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n }\n else {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /* tslint:enable */\n }\n Object.defineProperty(PdfPageTemplateElement.prototype, \"dock\", {\n // Properties\n /**\n * Gets or sets the `dock style` of the page template element.\n * @private\n */\n get: function () {\n return this.dockStyle;\n },\n set: function (value) {\n // if (this.dockStyle !== value && this.Type === TemplateType.None) {\n this.dockStyle = value;\n // Reset alignment.\n this.resetAlignment();\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"alignment\", {\n /**\n * Gets or sets `alignment` of the page template element.\n * @private\n */\n get: function () {\n return this.alignmentStyle;\n },\n set: function (value) {\n // if (this.alignmentStyle !== value) {\n this.setAlignment(value);\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"foreground\", {\n /**\n * Indicates whether the page template is located `in front of the page layers or behind of it`.\n * @private\n */\n get: function () {\n return this.isForeground;\n },\n set: function (value) {\n // if (this.foreground !== value) {\n this.isForeground = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"background\", {\n /**\n * Indicates whether the page template is located `behind of the page layers or in front of it`.\n * @private\n */\n get: function () {\n return !this.isForeground;\n },\n set: function (value) {\n this.isForeground = !value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"location\", {\n /**\n * Gets or sets `location` of the page template element.\n * @private\n */\n get: function () {\n return this.currentLocation;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"x\", {\n /**\n * Gets or sets `X` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.x : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.x = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"y\", {\n /**\n * Gets or sets `Y` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.y : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.y = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"size\", {\n /**\n * Gets or sets `size` of the page template element.\n * @private\n */\n get: function () {\n return this.template.size;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.template.reset(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"width\", {\n /**\n * Gets or sets `width` of the page template element.\n * @private\n */\n get: function () {\n return this.template.width;\n },\n set: function (value) {\n if (this.template.width !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.width = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"height\", {\n /**\n * Gets or sets `height` of the page template element.\n * @private\n */\n get: function () {\n return this.template.height;\n },\n set: function (value) {\n if (this.template.height !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.height = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"graphics\", {\n /**\n * Gets `graphics` context of the page template element.\n * @private\n */\n get: function () {\n return this.template.graphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"template\", {\n /**\n * Gets Pdf `template` object.\n * @private\n */\n get: function () {\n // if (typeof this.pdfTemplate === 'undefined' || this.pdfTemplate == null) {\n // this.pdfTemplate = new PdfTemplate(this.size);\n // }\n return this.pdfTemplate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"type\", {\n /**\n * Gets or sets `type` of the usage of this page template.\n * @private\n */\n get: function () {\n return this.templateType;\n },\n set: function (value) {\n this.updateDocking(value);\n this.templateType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"bounds\", {\n /**\n * Gets or sets `bounds` of the page template.\n * @public\n */\n get: function () {\n return new RectangleF(new PointF(this.x, this.y), this.size);\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.location = new PointF(value.x, value.y);\n this.size = new SizeF(value.width, value.height);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize Bounds` Initialize the bounds value of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.InitiateBounds = function (arg1, arg2, arg3, arg4, arg5) {\n this.x = arg1;\n this.y = arg2;\n this.pdfTemplate = new PdfTemplate(arg3, arg4);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n };\n /**\n * `Updates Dock` property if template is used as header/footer.\n * @private\n */\n PdfPageTemplateElement.prototype.updateDocking = function (type) {\n if (type !== TemplateType.None) {\n switch (type) {\n case TemplateType.Top:\n this.dock = PdfDockStyle.Top;\n break;\n case TemplateType.Bottom:\n this.dock = PdfDockStyle.Bottom;\n break;\n case TemplateType.Left:\n this.dock = PdfDockStyle.Left;\n break;\n case TemplateType.Right:\n this.dock = PdfDockStyle.Right;\n break;\n }\n this.resetAlignment();\n }\n };\n /**\n * `Resets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.resetAlignment = function () {\n this.alignment = PdfAlignmentStyle.None;\n };\n /**\n * `Sets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.setAlignment = function (alignment) {\n if (this.dock === PdfDockStyle.None) {\n this.alignmentStyle = alignment;\n }\n else {\n // Template is docked and alignment has been changed.\n var canBeSet = false;\n switch (this.dock) {\n case PdfDockStyle.Left:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.MiddleLeft ||\n alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Top:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.TopCenter ||\n alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Right:\n canBeSet = (alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.MiddleRight ||\n alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Bottom:\n canBeSet = (alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.BottomCenter\n || alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Fill:\n canBeSet = (alignment === PdfAlignmentStyle.MiddleCenter || alignment === PdfAlignmentStyle.None);\n break;\n }\n if (canBeSet) {\n this.alignmentStyle = alignment;\n }\n }\n };\n /**\n * Draws the template.\n * @private\n */\n PdfPageTemplateElement.prototype.draw = function (layer, document) {\n var page = layer.page;\n var bounds = this.calculateBounds(page, document);\n if (bounds.x === -0) {\n bounds.x = 0;\n }\n layer.graphics.drawPdfTemplate(this.template, new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n };\n /**\n * Calculates bounds of the page template.\n * @private\n */\n PdfPageTemplateElement.prototype.calculateBounds = function (page, document) {\n var result = this.bounds;\n if (this.alignmentStyle !== PdfAlignmentStyle.None) {\n result = this.getAlignmentBounds(page, document);\n }\n else if (this.dockStyle !== PdfDockStyle.None) {\n result = this.getDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getAlignmentBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleAlignmentBounds(page, document);\n }\n else {\n result = this.getTemplateAlignmentBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleAlignmentBounds = function (page, document) {\n var bounds = this.bounds;\n var pdfSection = page.section;\n var actualBounds = pdfSection.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n x = 0;\n y = 0;\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = 0;\n break;\n case PdfAlignmentStyle.TopRight:\n x = actualBounds.width - this.width;\n y = 0;\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = 0;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n x = 0;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n x = actualBounds.width - this.width;\n y = actualBounds.height - this.height;\n break;\n }\n bounds.x = x;\n bounds.y = y;\n return bounds;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateAlignmentBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = -actualBounds.x;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = -actualBounds.y;\n break;\n case PdfAlignmentStyle.TopRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = -actualBounds.x;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n }\n result.x = x;\n result.y = y;\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getDockBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleDockBounds(page, document);\n }\n else {\n result = this.getTemplateDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = 0;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = 0;\n y = 0;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = 0;\n y = actualBounds.height - this.height;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Calculates template bounds basing on docking if template is a page template.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var actualSize = section.pageSettings.getActualSize();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = -actualBounds.x;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = -actualBounds.x;\n y = -actualBounds.y;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y = -actualBounds.y + actualSize.height;\n }\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y -= actualSize.height;\n }\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n return PdfPageTemplateElement;\n}());\nexport { PdfPageTemplateElement };\n","/**\n * PdfNumbersConvertor.ts class for EJ2-PDF\n * @private\n */\nimport { PdfNumberStyle } from './../../pages/enum';\n/**\n * `PdfNumbersConvertor` for convert page number into numbers, roman letters, etc.,\n * @private\n */\nvar PdfNumbersConvertor = /** @class */ (function () {\n function PdfNumbersConvertor() {\n }\n // Static methods\n /**\n * Convert string value from page number with correct format.\n * @private\n */\n PdfNumbersConvertor.convert = function (intArabic, numberStyle) {\n var result = '';\n switch (numberStyle) {\n case PdfNumberStyle.None:\n result = '';\n break;\n case PdfNumberStyle.Numeric:\n result = intArabic.toString();\n break;\n case PdfNumberStyle.LowerLatin:\n result = this.arabicToLetter(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.LowerRoman:\n result = this.arabicToRoman(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.UpperLatin:\n result = this.arabicToLetter(intArabic);\n break;\n case PdfNumberStyle.UpperRoman:\n result = this.arabicToRoman(intArabic);\n break;\n }\n return result;\n };\n /**\n * Converts `arabic to roman` letters.\n * @private\n */\n PdfNumbersConvertor.arabicToRoman = function (intArabic) {\n var retval = '';\n var retvalM = this.generateNumber(intArabic, 1000, 'M');\n retval += retvalM.returnValue;\n intArabic = retvalM.intArabic;\n var retvalCM = this.generateNumber(intArabic, 900, 'CM');\n retval += retvalCM.returnValue;\n intArabic = retvalCM.intArabic;\n var retvalD = this.generateNumber(intArabic, 500, 'D');\n retval += retvalD.returnValue;\n intArabic = retvalD.intArabic;\n var retvalCD = this.generateNumber(intArabic, 400, 'CD');\n retval += retvalCD.returnValue;\n intArabic = retvalCD.intArabic;\n var retvalC = this.generateNumber(intArabic, 100, 'C');\n retval += retvalC.returnValue;\n intArabic = retvalC.intArabic;\n var retvalXC = this.generateNumber(intArabic, 90, 'XC');\n retval += retvalXC.returnValue;\n intArabic = retvalXC.intArabic;\n var retvalL = this.generateNumber(intArabic, 50, 'L');\n retval += retvalL.returnValue;\n intArabic = retvalL.intArabic;\n var retvalXL = this.generateNumber(intArabic, 40, 'XL');\n retval += retvalXL.returnValue;\n intArabic = retvalXL.intArabic;\n var retvalX = this.generateNumber(intArabic, 10, 'X');\n retval += retvalX.returnValue;\n intArabic = retvalX.intArabic;\n var retvalIX = this.generateNumber(intArabic, 9, 'IX');\n retval += retvalIX.returnValue;\n intArabic = retvalIX.intArabic;\n var retvalV = this.generateNumber(intArabic, 5, 'V');\n retval += retvalV.returnValue;\n intArabic = retvalV.intArabic;\n var retvalIV = this.generateNumber(intArabic, 4, 'IV');\n retval += retvalIV.returnValue;\n intArabic = retvalIV.intArabic;\n var retvalI = this.generateNumber(intArabic, 1, 'I');\n retval += retvalI.returnValue;\n intArabic = retvalI.intArabic;\n return retval.toString();\n };\n /**\n * Converts `arabic to normal letters`.\n * @private\n */\n PdfNumbersConvertor.arabicToLetter = function (arabic) {\n var stack = this.convertToLetter(arabic);\n var result = '';\n while (stack.length > 0) {\n var num = stack.pop();\n result = this.appendChar(result, num);\n }\n return result.toString();\n };\n /**\n * Generate a string value of an input number.\n * @private\n */\n PdfNumbersConvertor.generateNumber = function (value, magnitude, letter) {\n var numberstring = '';\n while (value >= magnitude) {\n value -= magnitude;\n numberstring += letter;\n }\n return { returnValue: numberstring.toString(), intArabic: value };\n };\n /**\n * Convert a input number into letters.\n * @private\n */\n PdfNumbersConvertor.convertToLetter = function (arabic) {\n if (arabic <= 0) {\n throw Error('ArgumentOutOfRangeException-arabic, Value can not be less 0');\n }\n var stack = [];\n while (arabic > this.letterLimit) {\n var remainder = arabic % this.letterLimit;\n if (remainder === 0.0) {\n arabic = arabic / this.letterLimit - 1;\n remainder = this.letterLimit;\n }\n else {\n arabic /= this.letterLimit;\n }\n stack.push(remainder);\n }\n stack.push(arabic);\n return stack;\n };\n /**\n * Convert number to actual string value.\n * @private\n */\n PdfNumbersConvertor.appendChar = function (builder, value) {\n var letter = String.fromCharCode(PdfNumbersConvertor.acsiiStartIndex + value);\n builder += letter;\n return builder;\n };\n // Fields\n /**\n * numbers of letters in english [readonly].\n * @default = 26.0\n * @private\n */\n PdfNumbersConvertor.letterLimit = 26.0;\n /**\n * Resturns `acsii start index` value.\n * @default 64\n * @private\n */\n PdfNumbersConvertor.acsiiStartIndex = (65 - 1);\n return PdfNumbersConvertor;\n}());\nexport { PdfNumbersConvertor };\n","/**\n * Represent class to store information about `template and value pairs`.\n * @private\n */\nvar PdfTemplateValuePair = /** @class */ (function () {\n function PdfTemplateValuePair(template, value) {\n // Fields\n /**\n * Internal variable to store template.\n * @default null\n * @private\n */\n this.pdfTemplate = null;\n /**\n * Intenal variable to store value.\n * @private\n */\n this.content = '';\n if (typeof template === 'undefined') {\n //\n }\n else {\n this.template = template;\n this.value = value;\n }\n }\n Object.defineProperty(PdfTemplateValuePair.prototype, \"template\", {\n // Properties\n /**\n * Gets or sets the template.\n * @private\n */\n get: function () {\n return this.pdfTemplate;\n },\n set: function (value) {\n this.pdfTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplateValuePair.prototype, \"value\", {\n /**\n * Gets or sets the value.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplateValuePair;\n}());\nexport { PdfTemplateValuePair };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value within the `PdfGraphics`.\n */\nvar PdfMultipleValueField = /** @class */ (function (_super) {\n __extends(PdfMultipleValueField, _super);\n function PdfMultipleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the instance of dictionary values of `graphics and template value pair`.\n * @private\n */\n _this.list = new TemporaryDictionary();\n return _this;\n }\n // Implementation\n /* tslint:disable */\n PdfMultipleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var value = this.getValue(graphics);\n var template = new PdfTemplate(this.getSize());\n this.list.setValue(graphics, new PdfTemplateValuePair(template, value));\n var g = template.graphics;\n var size = this.getSize();\n template.graphics.drawString(value, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n };\n return PdfMultipleValueField;\n}(PdfAutomaticField));\nexport { PdfMultipleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents PDF document `page number field`.\n * @public\n */\nvar PdfPageNumberField = /** @class */ (function (_super) {\n __extends(PdfPageNumberField, _super);\n function PdfPageNumberField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the page number field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageNumberField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the page number field.\n * @private\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return the `string` value of page number field.\n * @public\n */\n PdfPageNumberField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n result = this.internalGetValue(page);\n return result;\n };\n /**\n * Internal method to `get actual value of page number`.\n * @private\n */\n PdfPageNumberField.prototype.internalGetValue = function (page) {\n var document = page.document;\n var pageIndex = document.pages.indexOf(page) + 1;\n return PdfNumbersConvertor.convert(pageIndex, this.numberStyle);\n };\n return PdfPageNumberField;\n}(PdfMultipleValueField));\nexport { PdfPageNumberField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * PdfCompositeField.ts class for EJ2-PDF\n */\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents class which can concatenate multiple automatic fields into single string.\n */\nvar PdfCompositeField = /** @class */ (function (_super) {\n __extends(PdfCompositeField, _super);\n // Constructor\n /**\n * Initialize a new instance of `PdfCompositeField` class.\n * @param font Font of the field.\n * @param brush Color of the field.\n * @param text Content of the field.\n * @param list List of the automatic fields in specific order based on the text content.\n */\n function PdfCompositeField(font, brush, text) {\n var list = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n list[_i - 3] = arguments[_i];\n }\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the array of automatic fields.\n * @private\n */\n _this.internalAutomaticFields = null;\n /**\n * Stores the text value of the field.\n * @private\n */\n _this.internalText = '';\n _this.font = font;\n _this.brush = brush;\n _this.text = text;\n _this.automaticFields = list;\n return _this;\n }\n Object.defineProperty(PdfCompositeField.prototype, \"text\", {\n // Properties\n /**\n * Gets and sets the content of the field.\n * @public\n */\n get: function () {\n return this.internalText;\n },\n set: function (value) {\n this.internalText = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCompositeField.prototype, \"automaticFields\", {\n /**\n * Gets and sets the list of the field to drawn.\n * @public\n */\n get: function () {\n return this.internalAutomaticFields;\n },\n set: function (value) {\n this.internalAutomaticFields = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value generated from the list of automatic fields.\n * @public\n */\n PdfCompositeField.prototype.getValue = function (graphics) {\n var values = [];\n var text = this.text.toString();\n if (typeof this.automaticFields !== 'undefined' && this.automaticFields != null && this.automaticFields.length > 0) {\n for (var i = 0; i < this.automaticFields.length; i++) {\n var automaticField = this.automaticFields[i];\n text = text.replace('{' + i + '}', automaticField.getValue(graphics));\n }\n }\n return text;\n };\n return PdfCompositeField;\n}(PdfMultipleValueField));\nexport { PdfCompositeField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * PdfSingleValueField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value in the whole document.\n */\nvar PdfSingleValueField = /** @class */ (function (_super) {\n __extends(PdfSingleValueField, _super);\n // Constructors\n function PdfSingleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /* tslint:disable */\n _this.list = new TemporaryDictionary();\n /* tslint:enable */\n _this.painterGraphics = [];\n return _this;\n }\n PdfSingleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var page = this.getPageFromGraphics(graphics);\n var document = page.document;\n var textValue = this.getValue(graphics);\n /* tslint:disable */\n if (this.list.containsKey(document)) {\n var pair = this.list.getValue(document);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(pair.template, drawLocation, new SizeF(pair.template.width * scalingX, pair.template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n else {\n var size = this.getSize();\n var template = new PdfTemplate(size);\n this.list.setValue(document, new PdfTemplateValuePair(template, textValue));\n template.graphics.drawString(textValue, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n /* tslint:enable */\n };\n return PdfSingleValueField;\n}(PdfAutomaticField));\nexport { PdfSingleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * PdfPageCountField.ts class for EJ2-PDF\n */\nimport { PdfSingleValueField } from './single-value-field';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\n/**\n * Represents total PDF document page count automatic field.\n */\nvar PdfPageCountField = /** @class */ (function (_super) {\n __extends(PdfPageCountField, _super);\n function PdfPageCountField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageCountField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the field.\n * @public\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value of the content to drawn.\n * @public\n */\n PdfPageCountField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n var document = page.section.parent.document;\n var count = document.pages.count;\n result = PdfNumbersConvertor.convert(count, this.numberStyle);\n return result;\n };\n return PdfPageCountField;\n}(PdfSingleValueField));\nexport { PdfPageCountField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * PdfTrueTypeFont.ts class for EJ2-PDF\n */\nimport { UnicodeTrueTypeFont } from './unicode-true-type-font';\nimport { PdfFont } from './pdf-font';\nimport { PdfFontStyle } from './enum';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfTextDirection } from './../enum';\nimport { RtlRenderer } from './rtl-renderer';\n//https://www.giftofspeed.com/base64-encoder/\nvar PdfTrueTypeFont = /** @class */ (function (_super) {\n __extends(PdfTrueTypeFont, _super);\n function PdfTrueTypeFont(base64String, size, style) {\n var _this = _super.call(this, size) || this;\n /**\n * Indicates whether the font is embedded or not.\n * @private\n */\n _this.isEmbedFont = false;\n /**\n * Indicates whether the font is unicoded or not.\n * @private\n */\n _this.isUnicode = true;\n if (style !== undefined) {\n _this.createFontInternal(base64String, style);\n }\n else {\n _this.createFontInternal(base64String, PdfFontStyle.Regular);\n }\n return _this;\n }\n PdfTrueTypeFont.prototype.equalsToFont = function (font) {\n var result = false;\n //let result : boolean = this.fontInternal.equalsToFont(font);\n return result;\n };\n PdfTrueTypeFont.prototype.getLineWidth = function (line, format) {\n var width = 0;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var returnValue = this.getUnicodeLineWidth(line, /*out*/ width, format);\n width = returnValue.width;\n }\n else {\n width = this.fontInternal.getLineWidth(line);\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Returns width of the char.\n */\n PdfTrueTypeFont.prototype.getCharWidth = function (charCode, format) {\n var codeWidth = this.fontInternal.getCharWidth(charCode);\n var size = this.metrics.getSize(format);\n codeWidth *= (0.001 * size);\n return codeWidth;\n };\n //Implementation\n PdfTrueTypeFont.prototype.createFontInternal = function (base64String, style) {\n this.fontInternal = new UnicodeTrueTypeFont(base64String, this.size);\n this.calculateStyle(style);\n this.initializeInternals();\n };\n PdfTrueTypeFont.prototype.calculateStyle = function (style) {\n var iStyle = this.fontInternal.ttfMetrics.macStyle;\n if ((style & PdfFontStyle.Underline) !== 0) {\n iStyle |= PdfFontStyle.Underline;\n }\n if ((style & PdfFontStyle.Strikeout) !== 0) {\n iStyle |= PdfFontStyle.Strikeout;\n }\n this.setStyle(iStyle);\n };\n PdfTrueTypeFont.prototype.initializeInternals = function () {\n var equalFont = null;\n if (PdfDocument.enableCache) {\n // Search for the similar fonts.\n equalFont = PdfDocument.cache.search(this);\n }\n var internals = null;\n // There is not equal font in the cache.\n if (equalFont !== null && equalFont !== undefined) {\n // Get the settings from the cached font.\n internals = equalFont.getInternals();\n var metrics = equalFont.metrics;\n metrics = metrics.clone();\n metrics.size = this.size;\n this.metrics = metrics;\n this.fontInternal = equalFont.fontInternal;\n }\n else {\n if (equalFont == null) {\n if (this.fontInternal instanceof UnicodeTrueTypeFont) {\n this.fontInternal.isEmbed = this.isEmbedFont;\n }\n this.fontInternal.createInternals();\n internals = this.fontInternal.getInternals();\n this.metrics = this.fontInternal.metrics;\n }\n }\n this.metrics.isUnicodeFont = true;\n this.setInternals(internals);\n //this.ttfReader = (this.fontInternal as UnicodeTrueTypeFont).ttfReader;\n };\n /**\n * Stores used symbols.\n */\n PdfTrueTypeFont.prototype.setSymbols = function (text) {\n var internalFont = this.fontInternal;\n if (internalFont != null) {\n internalFont.setSymbols(text);\n }\n };\n Object.defineProperty(PdfTrueTypeFont.prototype, \"Unicode\", {\n /**\n * Property\n *\n */\n get: function () {\n return this.isUnicode;\n },\n enumerable: true,\n configurable: true\n });\n // public get Font() : UnicodeTrueTypeFont {\n // return this.fontInternal as UnicodeTrueTypeFont;\n // }\n PdfTrueTypeFont.prototype.getUnicodeLineWidth = function (line, /*out*/ width, format) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n width = 0;\n var glyphIndices = null;\n var rtlRender = new RtlRenderer();\n /* tslint:disable-next-line:max-line-length */\n var result = rtlRender.getGlyphIndex(line, this, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, /*out*/ glyphIndices, true);\n var resultGlyph = result.success;\n glyphIndices = result.glyphs;\n if (resultGlyph && glyphIndices !== null) {\n var ttfReader = this.fontInternal.ttfReader;\n for (var i = 0, len = glyphIndices.length; i < len; i++) {\n var glyphIndex = glyphIndices[i];\n var glyph = ttfReader.getGlyph(glyphIndex);\n if (glyph !== null && typeof glyph !== 'undefined') {\n width += glyph.width;\n }\n }\n }\n return { success: resultGlyph, width: width };\n };\n return PdfTrueTypeFont;\n}(PdfFont));\nexport { PdfTrueTypeFont };\n","import * as events from '../base/constant';\nimport { PdfDocument, PdfGrid, PdfBorders, PdfPen, PdfPaddings } from '@syncfusion/ej2-pdf-export';\nimport { PdfStandardFont, PdfFontFamily, PdfFontStyle, PdfBitmap } from '@syncfusion/ej2-pdf-export';\nimport { PdfStringFormat, PdfTextAlignment, PdfColor, PdfSolidBrush, PdfTextWebLink } from '@syncfusion/ej2-pdf-export';\nimport { PdfVerticalAlignment, RectangleF, PdfPageTemplateElement } from '@syncfusion/ej2-pdf-export';\nimport { PointF, PdfPageNumberField, PdfCompositeField } from '@syncfusion/ej2-pdf-export';\nimport { PdfPageCountField, SizeF, PdfPageSettings, PdfPageOrientation } from '@syncfusion/ej2-pdf-export';\nimport { PdfTrueTypeFont } from '@syncfusion/ej2-pdf-export';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { Data } from '../actions/data';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { compile, getEnumValue, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getValue } from '@syncfusion/ej2-base';\nimport { getUid, getPrintGridModel, measureColumnDepth, isExportColumns, updateColumnTypeForExportColumns, prepareColumns } from '../base/util';\n/**\n * `PDF Export` module is used to handle the exportToPDF action.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for the Grid PDF Export module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function PdfExport(parent) {\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.customDataSource = false;\n this.isGrouping = false;\n this.headerOnPages = [];\n this.drawPosition = { xPosition: 0, yPosition: 0 };\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.gridPool = {};\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n PdfExport.prototype.getModuleName = function () {\n return 'PdfExport';\n };\n PdfExport.prototype.init = function (parent) {\n this.exportValueFormatter = new ExportValueFormatter(parent.locale);\n this.pdfDocument = undefined;\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.parent = parent;\n this.isGrouping = false;\n this.isExporting = true;\n parent.id = getUid('main-grid');\n this.gridPool[parent.id] = false;\n this.pdfPageSettings = new PdfPageSettings();\n };\n PdfExport.prototype.exportWithData = function (parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject) {\n var _this = this;\n this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n this.pdfDocument = pdfDoc;\n }\n else {\n this.pdfDocument = new PdfDocument();\n }\n this.processExport(parent, returnType, pdfExportProperties, isMultipleExport).then(function () {\n _this.isExporting = false;\n parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise } : {});\n _this.parent.log('exporting_complete', _this.getModuleName());\n resolve(_this.pdfDocument);\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(events.actionFailure, e);\n });\n };\n /**\n * Used to map the input data\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PdfExportProperties} pdfExportProperties - specifies the PdfExportProperties\n * @param {boolean} isMultipleExport - specifies the isMultipleExport\n * @param {Object} pdfDoc - specifies the pdfDoc\n * @param {boolean} isBlob - speciies whether it is Blob or not\n * @returns {void}\n */\n PdfExport.prototype.Map = function (parent, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n var _this = this;\n this.data = new Data(this.parent);\n this.isBlob = isBlob;\n this.gridPool = {};\n var query = new Query();\n if (parent.childGrid && !(!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.hierarchyExportMode === 'None')) {\n parent.expandedRows = getPrintGridModel(parent).expandedRows;\n }\n var args = {\n requestType: 'beforePdfExport', cancel: false,\n headerPageNumbers: [], gridDrawPosition: { xPosition: 0, yPosition: 0 }, generateQuery: false\n };\n var gridObject = 'gridObject';\n args[\"\" + gridObject] = parent;\n var can = 'cancel';\n var generateQuery = 'generateQuery';\n var header = 'headerPageNumbers';\n var drawPos = 'gridDrawPosition';\n parent.trigger(events.beforePdfExport, args);\n if (args[\"\" + can] === true) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n return resolve();\n });\n }\n if (isExportColumns(pdfExportProperties)) {\n updateColumnTypeForExportColumns(pdfExportProperties, parent);\n }\n if (args[\"\" + generateQuery]) {\n query = ExportHelper.getQuery(parent, this.data);\n }\n this.headerOnPages = args[\"\" + header];\n this.drawPosition = args[\"\" + drawPos];\n this.parent.log('exporting_begin', this.getModuleName());\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)\n && pdfExportProperties.dataSource instanceof DataManager) {\n return new Promise(function (resolve, reject) {\n pdfExportProperties.dataSource.executeQuery(query).then(function (returnType) {\n _this.exportWithData(parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject);\n });\n });\n }\n else if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve, reject) {\n _this.exportWithData(parent, pdfDoc, resolve, _this.parent.getCurrentViewRecords(), pdfExportProperties, isMultipleExport, reject);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(parent, this.data)));\n allPromise_1.push(this.helper.getColumnData(parent));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n _this.pdfDocument = pdfDoc;\n }\n else {\n _this.pdfDocument = new PdfDocument();\n }\n _this.processExport(parent, e[0], pdfExportProperties, isMultipleExport).then(function () {\n _this.isExporting = false;\n parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise } : {});\n _this.parent.log('exporting_complete', _this.getModuleName());\n resolve(_this.pdfDocument);\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n });\n }\n };\n PdfExport.prototype.processExport = function (gObj, returnType, pdfExportProperties, isMultipleExport) {\n var _this = this;\n var section = this.pdfDocument.sections.add();\n var pdfGrid;\n this.processSectionExportProperties(section, pdfExportProperties);\n var pdfPage = section.pages.add();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n pdfGrid = _this.processGridExport(gObj, returnType, pdfExportProperties);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n // draw the grid\n var xPosition = 'xPosition';\n var yPosition = 'yPosition';\n pdfGrid.draw(pdfPage, _this.drawPosition[\"\" + xPosition], _this.drawPosition[\"\" + yPosition]);\n _this.drawHeader(pdfExportProperties);\n if (!isMultipleExport) {\n // save the PDF\n if (!_this.isBlob) {\n if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.fileName) {\n _this.pdfDocument.save(pdfExportProperties.fileName);\n }\n else {\n _this.pdfDocument.save('Export.pdf');\n }\n }\n else {\n _this.blobPromise = _this.pdfDocument.save();\n }\n _this.pdfDocument.destroy();\n delete gObj.expandedRows;\n }\n return _this.pdfDocument;\n });\n };\n PdfExport.prototype.processSectionExportProperties = function (section, pdfExportProperties) {\n if (!isNullOrUndefined(pdfExportProperties) && (!isNullOrUndefined(pdfExportProperties.pageOrientation)\n || !isNullOrUndefined(pdfExportProperties.pageSize))) {\n this.pdfPageSettings.orientation = (pdfExportProperties.pageOrientation === 'Landscape') ?\n PdfPageOrientation.Landscape : PdfPageOrientation.Portrait;\n this.pdfPageSettings.size = this.getPageSize(pdfExportProperties.pageSize);\n section.setPageSettings(this.pdfPageSettings);\n }\n return section;\n };\n PdfExport.prototype.processGridExport = function (gObj, returnType, pdfExportProperties) {\n var allowHorizontalOverflow = true;\n var isFrozen = this.parent.isFrozenGrid() && !this.parent.getFrozenColumns();\n if (!isNullOrUndefined(pdfExportProperties)) {\n this.gridTheme = pdfExportProperties.theme;\n allowHorizontalOverflow = isNullOrUndefined(pdfExportProperties.allowHorizontalOverflow) ?\n true : pdfExportProperties.allowHorizontalOverflow;\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var dataSource = this.processExportProperties(pdfExportProperties, returnType.result);\n var columns = isExportColumns(pdfExportProperties) ?\n prepareColumns(pdfExportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(isFrozen ? gObj.getColumns() : gObj.columns);\n columns = columns.filter(function (columns) { return isNullOrUndefined(columns.commands); });\n var isGrouping = false;\n if (gObj.groupSettings.columns.length) {\n isGrouping = true;\n }\n if (gObj.childGrid && !isNullOrUndefined(pdfExportProperties)) {\n gObj.hierarchyPrintMode = pdfExportProperties.hierarchyExportMode || 'Expanded';\n }\n // create a grid\n var pdfGrid = new PdfGrid();\n // get header theme style\n var headerThemeStyle = this.getHeaderThemeStyle();\n var border = headerThemeStyle.border;\n var headerFont = headerThemeStyle.font;\n var headerBrush = headerThemeStyle.brush;\n var returnValue = helper.getHeaders(columns, this.hideColumnInclude);\n // Column collection with respect to the records in the grid\n var gridColumns = returnValue.columns;\n // process grid header content\n pdfGrid = this.processGridHeaders(gObj.groupSettings.columns.length, pdfGrid, returnValue.rows, gridColumns, border, headerFont, headerBrush, gObj, allowHorizontalOverflow, columns);\n // set alignment, width and type of the values of the column\n this.setColumnProperties(gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow);\n var captionThemeStyle = this.getSummaryCaptionThemeStyle();\n if (!isNullOrUndefined(dataSource) && dataSource.length) {\n if (isGrouping) {\n if (!isNullOrUndefined(captionThemeStyle.border)) {\n border = captionThemeStyle.border;\n }\n this.processGroupedRecords(pdfGrid, dataSource, gridColumns, gObj, border, 0, captionThemeStyle.font, captionThemeStyle.\n brush, captionThemeStyle.backgroundBrush, returnType, pdfExportProperties, helper, 0);\n }\n else {\n this.processRecord(border, gridColumns, gObj, dataSource, pdfGrid, 0, pdfExportProperties, helper, 0);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var sRows = void 0;\n var column = summaryModel.getColumns();\n column = column.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n if (this.customDataSource) {\n sRows = summaryModel.generateRows(dataSource, returnType.aggregates);\n }\n else if (this.currentViewData) {\n sRows = summaryModel.generateRows(this.parent.getCurrentViewRecords(), returnType.aggregates);\n }\n else if (isGrouping) {\n sRows = summaryModel.generateRows(dataSource.records, returnType.aggregates);\n }\n else {\n sRows = summaryModel.generateRows(returnType.result, returnType.aggregates, null, null, column);\n }\n this.processAggregates(sRows, pdfGrid, border, captionThemeStyle.font, captionThemeStyle.brush, captionThemeStyle.backgroundBrush, false, null, null, null, isGrouping ? false : true);\n }\n }\n else {\n var row = pdfGrid.rows.addRow();\n row.style.setBorder(border);\n }\n return pdfGrid;\n };\n PdfExport.prototype.getSummaryCaptionThemeStyle = function () {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.caption)) {\n var fontSize = !isNullOrUndefined(this.gridTheme.caption.fontSize) ? this.gridTheme.caption.fontSize : 9.75;\n var fontFamily = !isNullOrUndefined(this.gridTheme.caption.fontName) ?\n this.getFontFamily(this.gridTheme.caption.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.caption);\n var pdfColor = new PdfColor(0, 0, 0);\n if (!isNullOrUndefined(this.gridTheme.caption.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.caption.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var borderCaption = this.gridTheme.caption.border ? this.getBorderStyle(this.gridTheme.caption.border) : null;\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.caption.font)) {\n font = this.gridTheme.caption.font;\n }\n return { font: font, brush: new PdfSolidBrush(pdfColor), backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)),\n border: borderCaption };\n }\n else {\n //Material theme\n return { font: new PdfStandardFont(PdfFontFamily.Helvetica, 9.75), brush: new PdfSolidBrush(new PdfColor(0, 0, 0)),\n backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)) };\n }\n };\n PdfExport.prototype.getGridPdfFont = function (args) {\n var fontFamily = 'fontFamily';\n var fontSize = 'fontSize';\n var fontStyle = 'fontStyle';\n var isTrueType = 'isTrueType';\n var style = 0;\n if (args.header && args.header.font) {\n var headerFont = args.header.font[\"\" + fontFamily];\n var headerSize = args.header.font[\"\" + fontSize];\n var headerStyle = args.header.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + headerStyle]) ? 0 : PdfFontStyle[\"\" + headerStyle]);\n if (args.header.font[\"\" + isTrueType]) {\n args.header.font = new PdfTrueTypeFont(headerFont, headerSize, style);\n }\n else {\n var fontFamily_1 = !isNullOrUndefined(headerFont) ?\n this.getFontFamily(headerFont) : PdfFontFamily.Helvetica;\n args.header.font = new PdfStandardFont(fontFamily_1, headerSize, style);\n }\n }\n if (args.caption && args.caption.font) {\n var captionFont = args.caption.font[\"\" + fontFamily];\n var captionSize = args.caption.font[\"\" + fontSize];\n var captionStyle = args.caption.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + captionStyle]) ? 0 : PdfFontStyle[\"\" + captionStyle]);\n if (args.caption.font[\"\" + isTrueType]) {\n args.caption.font = new PdfTrueTypeFont(captionFont, captionSize, style);\n }\n else {\n var fontFamily_2 = !isNullOrUndefined(captionFont) ?\n this.getFontFamily(captionFont) : PdfFontFamily.Helvetica;\n args.caption.font = new PdfStandardFont(fontFamily_2, captionSize, style);\n }\n }\n if (args.record && args.record.font) {\n var recordFont = args.record.font[\"\" + fontFamily];\n var recordSize = args.record.font[\"\" + fontSize];\n var recordStyle = args.record.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + recordStyle]) ? 0 : PdfFontStyle[\"\" + recordStyle]);\n if (args.record.font[\"\" + isTrueType]) {\n args.record.font = new PdfTrueTypeFont(recordFont, recordSize, style);\n }\n else {\n var fontFamily_3 = !isNullOrUndefined(recordFont) ?\n this.getFontFamily(recordFont) : PdfFontFamily.Helvetica;\n args.record.font = new PdfStandardFont(fontFamily_3, recordSize, style);\n }\n }\n };\n PdfExport.prototype.getHeaderThemeStyle = function () {\n var border = new PdfBorders();\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.header)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.header.fontName) ?\n this.getFontFamily(this.gridTheme.header.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.header);\n var fontSize = !isNullOrUndefined(this.gridTheme.header.fontSize) ? this.gridTheme.header.fontSize : 10.5;\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.header.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.header.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.header.font)) {\n font = this.gridTheme.header.font;\n }\n return { border: this.getBorderStyle(this.gridTheme.header.border), font: font, brush: new PdfSolidBrush(pdfColor) };\n }\n else {\n //Material theme\n border.all = new PdfPen(new PdfColor(234, 234, 234));\n return { border: border, font: new PdfStandardFont(PdfFontFamily.Helvetica, 10.5),\n brush: new PdfSolidBrush(new PdfColor(102, 102, 102)) };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.processGroupedRecords = function (pdfGrid, dataSource, gridColumns, gObj, border, level, font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index) {\n var _this = this;\n var groupIndex = level;\n var _loop_1 = function (dataSourceItems) {\n var row = pdfGrid.rows.addRow();\n var col = gObj.getColumnByField(dataSourceItems.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: dataSourceItems.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(dataSourceItems.field).headerText + ': ' + (!col.enableGroupByFormat ? this_1.exportValueFormatter.formatCellValue(args) : dataSourceItems.key) + ' - ' + dataSourceItems.count + (dataSource.count > 1 ? ' items' : ' item');\n var cArgs = { captionText: value, type: 'PDF', data: dataSourceItems, style: undefined };\n this_1.parent.trigger(events.exportGroupCaption, cArgs, function (cArgs) {\n row.cells.getCell(groupIndex).value = cArgs.captionText;\n row.cells.getCell(groupIndex).style.stringFormat = new PdfStringFormat(PdfTextAlignment.Left);\n row.style.setBorder(border);\n row.style.setFont(font);\n row.style.setTextBrush(brush);\n row.style.setBackgroundBrush(backgroundBrush);\n if (!isNullOrUndefined(cArgs.style)) {\n _this.processCellStyle(row.cells.getCell(groupIndex), cArgs);\n }\n var sRows;\n var captionSummaryModel = new CaptionSummaryModelGenerator(gObj);\n if (!isNullOrUndefined(dataSourceItems.items.records)) {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n }\n else {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n }\n if (!isNullOrUndefined(sRows) && sRows.length === 0) {\n row.cells.getCell(groupIndex + 1).columnSpan = pdfGrid.columns.count - (groupIndex + 1);\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex, null, null, gObj);\n _this.processGroupedRecords(pdfGrid, dataSourceItems.items, gridColumns, gObj, border, (groupIndex + 1), font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index);\n index = _this.rowIndex;\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false);\n }\n else {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex, null, null, gObj);\n index = _this.processRecord(border, gridColumns, gObj, dataSourceItems.items, pdfGrid, (groupIndex + 1), pdfExportProperties, helper, index);\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n var isGroupedFooter = true;\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false, null, null, isGroupedFooter, null, gObj);\n }\n });\n };\n var this_1 = this;\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var dataSourceItems = dataSource_1[_i];\n _loop_1(dataSourceItems);\n }\n };\n PdfExport.prototype.processGridHeaders = function (childLevels, pdfGrid, rows, gridColumn, border, headerFont, headerBrush, grid, allowHorizontalOverflow, eCols) {\n var _this = this;\n var columnCount = gridColumn.length + childLevels;\n var depth = measureColumnDepth(eCols);\n var cols = eCols;\n var index = 0;\n var rowNumber = [];\n for (var i = 0; i < rows.length; i++) {\n rowNumber[parseInt(i.toString(), 10)] = 0;\n }\n if (grid.groupSettings.columns.length) {\n index = grid.groupSettings.columns.length - 1;\n columnCount = columnCount - 1;\n }\n pdfGrid.columns.add(columnCount);\n pdfGrid.headers.add(rows.length);\n var applyTextAndSpan = function (rowIdx, colIdx, col, rowSpan, colSpan) {\n var gridHeader = pdfGrid.headers.getHeader(rowIdx);\n var pdfCell = gridHeader.cells.getCell(colIdx);\n var cell = rows[parseInt(rowIdx.toString(), 10)].cells[grid.groupSettings.columns.length ?\n colIdx : rowNumber[parseInt(rowIdx.toString(), 10)]];\n rowNumber[parseInt(rowIdx.toString(), 10)] = rowNumber[parseInt(rowIdx.toString(), 10)] + 1;\n if (!isNullOrUndefined(col.headerTextAlign)) {\n pdfCell.style.stringFormat = _this.getHorizontalAlignment(col.headerTextAlign);\n }\n if (rowSpan > 0) {\n pdfCell.rowSpan = rowSpan;\n pdfCell.style.stringFormat = _this.getVerticalAlignment('Bottom', pdfCell.style.stringFormat, col.textAlign);\n }\n if (colSpan > 0) {\n pdfCell.columnSpan = colSpan;\n }\n gridHeader.style.setBorder(border);\n gridHeader.style.setFont(headerFont);\n gridHeader.style.setTextBrush(headerBrush);\n pdfCell.value = col.headerText;\n if (!isNullOrUndefined(cell) && (cell.cellType === CellType.HeaderIndent || cell.cellType === CellType.DetailHeader)) {\n pdfCell.value = '';\n pdfCell.width = 20;\n }\n var args = {\n cell: pdfCell,\n gridCell: cell,\n style: pdfCell.style\n };\n _this.parent.trigger(events.pdfHeaderQueryCellInfo, args);\n var evtArgs = args;\n var setCellBorder = args.style.borders;\n var setCellFont = args.style.font;\n var setHeaderBrush = args.style.textBrush;\n if (!isNullOrUndefined(setCellBorder)) {\n gridHeader.style.setBorder(setCellBorder);\n }\n if (!isNullOrUndefined(setCellFont)) {\n gridHeader.style.setFont(setCellFont);\n }\n if (!isNullOrUndefined(setHeaderBrush)) {\n gridHeader.style.setTextBrush(setHeaderBrush);\n }\n if (!isNullOrUndefined(evtArgs.style.verticalAlignment)) {\n pdfCell.style.stringFormat = _this.getVerticalAlignment(evtArgs.style.verticalAlignment, pdfCell.style.stringFormat);\n }\n if (!isNullOrUndefined(evtArgs.image)) {\n pdfCell.value = new PdfBitmap(evtArgs.image.base64);\n }\n if (!isNullOrUndefined(evtArgs.hyperLink)) {\n pdfCell.value = _this.setHyperLink(evtArgs);\n }\n };\n var recuHeader = function (cols, depth, spanCnt, colIndex, rowIndex, isRoot) {\n var cidx = 0;\n for (var i = 0; i < cols.length; i++) {\n if (isRoot) {\n cidx = cidx + spanCnt + (i === 0 ? 0 : -1);\n colIndex = cidx;\n spanCnt = 0;\n }\n if (!isRoot && !cols[parseInt(i.toString(), 10)].visible) {\n colIndex = colIndex - 1;\n }\n if (cols[parseInt(i.toString(), 10)].columns && cols[parseInt(i.toString(), 10)].columns.length) {\n var newSpanCnt = recuHeader(cols[parseInt(i.toString(), 10)]\n .columns, depth - 1, 0, i + colIndex, rowIndex + 1, false);\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[parseInt(i.toString(), 10)], 0, newSpanCnt);\n spanCnt = spanCnt + newSpanCnt;\n colIndex = colIndex + newSpanCnt - 1;\n }\n else if (cols[parseInt(i.toString(), 10)].visible || _this.hideColumnInclude) {\n spanCnt++;\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[parseInt(i.toString(), 10)], depth, 0);\n }\n }\n return spanCnt;\n };\n recuHeader(cols, depth, 0, 0, 0, true);\n if (pdfGrid.columns.count >= 6 && allowHorizontalOverflow) {\n pdfGrid.style.allowHorizontalOverflow = true;\n }\n return pdfGrid;\n };\n PdfExport.prototype.processExportProperties = function (pdfExportProperties, dataSource) {\n if (!isNullOrUndefined(pdfExportProperties)) {\n if (!isNullOrUndefined(pdfExportProperties.theme)) {\n this.gridTheme = pdfExportProperties.theme;\n }\n var clientSize = this.pdfPageSettings.size;\n this.drawHeader(pdfExportProperties);\n if (!isNullOrUndefined(pdfExportProperties.footer)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footer = pdfExportProperties.footer;\n var position = new PointF(0, ((clientSize.width - 80) - (footer.fromBottom * 0.75)));\n var size = new SizeF((clientSize.width - 80), (footer.height * 0.75));\n var bounds = new RectangleF(position, size);\n this.pdfDocument.template.bottom = this.drawPageTemplate(new PdfPageTemplateElement(bounds), footer);\n }\n if (!isNullOrUndefined(pdfExportProperties.includeHiddenColumn) && !this.isGrouping) {\n this.hideColumnInclude = pdfExportProperties.includeHiddenColumn;\n }\n if (!isNullOrUndefined(pdfExportProperties.dataSource)) {\n if (!(pdfExportProperties.dataSource instanceof DataManager)) {\n dataSource = pdfExportProperties.dataSource;\n }\n this.customDataSource = true;\n this.currentViewData = false;\n }\n else if (!isNullOrUndefined(pdfExportProperties.exportType)) {\n if (pdfExportProperties.exportType === 'CurrentPage') {\n dataSource = this.parent.currentViewData;\n this.currentViewData = true;\n this.customDataSource = false;\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n return dataSource;\n };\n PdfExport.prototype.drawHeader = function (pdfExportProperties) {\n var _this = this;\n var clientSize = this.pdfPageSettings.size;\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.header)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var header = pdfExportProperties.header;\n var position = new PointF(0, header.fromTop);\n var size = new SizeF((clientSize.width - 80), (header.height * 0.75));\n var bounds = new RectangleF(position, size);\n if (!this.headerOnPages.length) {\n this.pdfDocument.template.top = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n }\n else {\n var headerTemplate_1 = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n this.headerOnPages.filter(function (index) {\n if (index - 1 >= 0 && index - 1 <= _this.pdfDocument.pages.count - 1) {\n _this.pdfDocument.pages.getPageByIndex(index - 1).graphics\n .drawPdfTemplate(headerTemplate_1.template, new PointF(0, 0));\n }\n });\n }\n }\n };\n PdfExport.prototype.drawPageTemplate = function (template, element) {\n for (var _i = 0, _a = element.contents; _i < _a.length; _i++) {\n var content = _a[_i];\n this.processContentValidation(content);\n switch (content.type) {\n case 'Text':\n if (content.value === '' || content.value === undefined || content.value === null || typeof content.value !== 'string') {\n throw new Error('please enter the valid input value in text content...');\n }\n this.drawText(template, content);\n break;\n case 'PageNumber':\n this.drawPageNumber(template, content);\n break;\n case 'Image':\n if (content.src === undefined || content.src === null || content.src === '') {\n throw new Error('please enter the valid base64 string in image content...');\n }\n this.drawImage(template, content);\n break;\n case 'Line':\n this.drawLine(template, content);\n break;\n default:\n throw new Error('Please set valid content type...');\n }\n }\n return template;\n };\n PdfExport.prototype.processContentValidation = function (content) {\n if (content.type === undefined || content.type === null) {\n throw new Error('please set valid content type...');\n }\n else {\n if (content.type === 'Line') {\n if (content.points === undefined || content.points === null) {\n throw new Error('please enter valid points in ' + content.type + ' content...');\n }\n else {\n if (content.points.x1 === undefined || content.points.x1 === null || typeof content.points.x1 !== 'number') {\n throw new Error('please enter valid x1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y1 === undefined || content.points.y1 === null || typeof content.points.y1 !== 'number') {\n throw new Error('please enter valid y1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.x2 === undefined || content.points.x2 === null || typeof content.points.x2 !== 'number') {\n throw new Error('please enter valid x2 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y2 === undefined || content.points.y2 === null || typeof content.points.y2 !== 'number') {\n throw new Error('please enter valid y2 co-ordinate in ' + content.type + ' points...');\n }\n }\n }\n else {\n if (content.position === undefined || content.position === null) {\n throw new Error('please enter valid position in ' + content.type + ' content...');\n }\n else {\n if (content.position.x === undefined || content.position.x === null || typeof content.position.x !== 'number') {\n throw new Error('please enter valid x co-ordinate in ' + content.type + ' position...');\n }\n if (content.position.y === undefined || content.position.y === null || typeof content.position.y !== 'number') {\n throw new Error('please enter valid y co-ordinate in ' + content.type + ' position...');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawText = function (pageTemplate, content) {\n var font = this.getFont(content);\n var brush = this.getBrushFromContent(content);\n var pen = null;\n if (!isNullOrUndefined(content.style.textPenColor)) {\n var penColor = this.hexToRgb(content.style.textPenColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n if (brush == null && pen == null) {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var value = content.value.toString();\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var format = new PdfStringFormat();\n if (!isNullOrUndefined(content.style.stringFormat)) {\n format.alignment = content.style.stringFormat.alignment;\n }\n var result = this.setContentFormat(content, format);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, result.size.width, result.size.height, result.format);\n }\n else {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, format);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawPageNumber = function (documentHeader, content) {\n var font = this.getFont(content);\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n else {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var pageNumber = new PdfPageNumberField(font, brush);\n pageNumber.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n var compositeField;\n var format;\n if (!isNullOrUndefined(content.format)) {\n var total = '$total';\n var current = '$current';\n if (content.format.indexOf(total) !== -1 && content.format.indexOf(current) !== -1) {\n var pageCount = new PdfPageCountField(font);\n pageCount.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n if (content.format.indexOf(total) > content.format.indexOf(current)) {\n format = content.format.replace(current, '0');\n format = format.replace(total, '1');\n }\n else {\n format = content.format.replace(current, '1');\n format = format.replace(total, '0');\n }\n compositeField = new PdfCompositeField(font, brush, format, pageNumber, pageCount);\n }\n else if (content.format.indexOf(current) !== -1 && content.format.indexOf(total) === -1) {\n format = content.format.replace(current, '0');\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n else {\n var pageCount = new PdfPageCountField(font);\n format = content.format.replace(total, '0');\n compositeField = new PdfCompositeField(font, brush, format, pageCount);\n }\n }\n else {\n format = '{0}';\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var result = this.setContentFormat(content, compositeField.stringFormat);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n compositeField.stringFormat = result.format;\n compositeField.bounds = new RectangleF(x, y, result.size.width, result.size.height);\n }\n compositeField.draw(documentHeader.graphics, x, y);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawImage = function (documentHeader, content) {\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var width = (!isNullOrUndefined(content.size)) ? (content.size.width * 0.75) : undefined;\n var height = (!isNullOrUndefined(content.size)) ? (content.size.height * 0.75) : undefined;\n var image = new PdfBitmap(content.src);\n if (!isNullOrUndefined(width)) {\n documentHeader.graphics.drawImage(image, x, y, width, height);\n }\n else {\n documentHeader.graphics.drawImage(image, x, y);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawLine = function (documentHeader, content) {\n var x1 = content.points.x1 * 0.75;\n var y1 = content.points.y1 * 0.75;\n var x2 = content.points.x2 * 0.75;\n var y2 = content.points.y2 * 0.75;\n var pen = this.getPenFromContent(content);\n if (!isNullOrUndefined(content.style) && content.style !== null) {\n if (!isNullOrUndefined(content.style.penSize) && content.style.penSize !== null && typeof content.style.penSize === 'number') {\n pen.width = content.style.penSize * 0.75;\n }\n pen.dashStyle = this.getDashStyle(content.style.dashStyle);\n }\n documentHeader.graphics.drawLine(pen, x1, y1, x2, y2);\n };\n PdfExport.prototype.processAggregates = function (sRows, pdfGrid, border, font, brush, backgroundBrush, isCaption, captionRow, groupIndex, isGroupedFooter, isAggregate, gObj) {\n for (var _i = 0, sRows_1 = sRows; _i < sRows_1.length; _i++) {\n var row = sRows_1[_i];\n var leastCaptionSummaryIndex = -1;\n var index = 0;\n var isEmpty = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = [];\n var aggIdx = isAggregate ? 0 : 1;\n for (var i = 0; i < pdfGrid.columns.count + aggIdx; i++) {\n var cell = row.cells[parseInt(index.toString(), 10)];\n if (cell.cellType === CellType.DetailFooterIntent) {\n i--;\n index++;\n continue;\n }\n if (!this.hideColumnInclude) {\n while (cell.visible === undefined) {\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if (!isNullOrUndefined(captionRow)) {\n if (!isNullOrUndefined(captionRow.cells.getCell(i).value)) {\n var args = { row: row, type: 'GroupCaption', style: captionRow.cells };\n this.parent.trigger(events.pdfAggregateQueryCellInfo, args);\n value.push(captionRow.cells.getCell(i).value);\n isEmpty = false;\n if (!isCaption) {\n i += 1;\n }\n }\n else {\n value.push('');\n }\n }\n else {\n value.push('');\n }\n i += 1;\n index = index + 1;\n cell = row.cells[parseInt(index.toString(), 10)];\n }\n while (!isNullOrUndefined(cell.visible) && !cell.visible) {\n index = index + 1;\n cell = row.cells[parseInt(index.toString(), 10)];\n }\n }\n if (cell.isDataCell) {\n var templateFn = {};\n if (!isNullOrUndefined(cell.column.footerTemplate) || !isNullOrUndefined(cell.column.groupCaptionTemplate)\n || !isNullOrUndefined(cell.column.groupFooterTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getTemplateFunction(templateFn, i, leastCaptionSummaryIndex, cell);\n templateFn = result.templateFunction;\n leastCaptionSummaryIndex = result.leastCaptionSummaryIndex;\n var txt = void 0;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if (this.parent.isReact || this.parent.isVue) {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n value.push(!isNullOrUndefined(txt[0]) ? txt[0].textContent : '');\n isEmpty = false;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getSummaryWithoutTemplate(row.data[cell.column.field]);\n if (!isNullOrUndefined(result)) {\n value.push(result);\n }\n }\n }\n else {\n value.push('');\n }\n if (isEmpty && value[parseInt(i.toString(), 10)] !== '' && !isNullOrUndefined(value[parseInt(i.toString(), 10)]) && value[parseInt(i.toString(), 10)] !== null) {\n isEmpty = false;\n }\n index += 1;\n }\n if (!isAggregate) {\n if (!isCaption) {\n value.splice(0, 1);\n }\n else {\n for (var i = gObj.groupSettings.columns.length; i < value.length - 1; i++) {\n value[parseInt(i.toString(), 10)] = value[i + 1];\n value[i + 1] = value[i + 2] ? value[i + 2] : '';\n }\n }\n }\n if (!isEmpty) {\n if (!isCaption) {\n var gridRow = pdfGrid.rows.addRow();\n gridRow.style.setBorder(border);\n gridRow.style.setFont(font);\n gridRow.style.setTextBrush(brush);\n gridRow.style.setBackgroundBrush(backgroundBrush);\n var args = {\n row: row, type: isGroupedFooter ? 'GroupFooter' : 'Footer', style: gridRow.cells\n };\n this.parent.trigger(events.pdfAggregateQueryCellInfo, args);\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n gridRow.cells.getCell(i).value = value[parseInt(i.toString(), 10)].toString();\n }\n }\n else {\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n captionRow.cells.getCell(i).value = value[parseInt(i.toString(), 10)].toString();\n if (i === groupIndex && leastCaptionSummaryIndex !== -1 && leastCaptionSummaryIndex !== 1) {\n captionRow.cells.getCell(i).columnSpan = (leastCaptionSummaryIndex - 1) - groupIndex;\n }\n else if (i === groupIndex && leastCaptionSummaryIndex === -1) {\n captionRow.cells.getCell(i).columnSpan = pdfGrid.columns.count - groupIndex;\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getTemplateFunction = function (templateFn, index, leastCaptionSummaryIndex, cell) {\n if (!isNullOrUndefined(cell.column.footerTemplate) && cell.cellType === CellType.Summary) {\n templateFn[getEnumValue(CellType, CellType.Summary)] = compile(cell.column.footerTemplate);\n }\n else if (!isNullOrUndefined(cell.column.groupCaptionTemplate)) {\n if (leastCaptionSummaryIndex === -1) {\n leastCaptionSummaryIndex = index;\n }\n templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = compile(cell.column.groupCaptionTemplate);\n }\n else {\n templateFn[getEnumValue(CellType, CellType.GroupSummary)] = compile(cell.column.groupFooterTemplate);\n }\n return { templateFunction: templateFn, leastCaptionSummaryIndex: leastCaptionSummaryIndex };\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getSummaryWithoutTemplate = function (data) {\n if (!isNullOrUndefined(data.Sum)) {\n return data.Sum;\n }\n else if (!isNullOrUndefined(data.Average)) {\n return data.Average;\n }\n else if (!isNullOrUndefined(data.Max)) {\n return data.Max;\n }\n else if (!isNullOrUndefined(data.Min)) {\n return data.Min;\n }\n else if (!isNullOrUndefined(data.Count)) {\n return data.Count;\n }\n else if (!isNullOrUndefined(data.TrueCount)) {\n return data.TrueCount;\n }\n else if (!isNullOrUndefined(data.FalseCount)) {\n return data.FalseCount;\n }\n else if (!isNullOrUndefined(data.Custom)) {\n return data.Custom;\n }\n };\n /**\n * Set alignment, width and type of the values of the column\n *\n * @param {Column[]} gridColumns - specifies the grid column\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {ExportHelper} helper - specifies the helper\n * @param {IGrid} gObj - specifies the IGrid\n * @param {boolean} allowHorizontalOverflow - specifies the allowHorizontalOverflow\n * @returns {void}\n */\n PdfExport.prototype.setColumnProperties = function (gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow) {\n var startIndex = gObj.groupSettings.columns.length ? gObj.groupSettings.columns.length - 1 : 0;\n for (var i = 0; i < startIndex; i++) {\n pdfGrid.columns.getColumn(i).width = 20;\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (!isNullOrUndefined(gridColumns[parseInt(i.toString(), 10)].textAlign)) {\n pdfGrid.columns.getColumn(i + startIndex).format = this\n .getHorizontalAlignment(gridColumns[parseInt(i.toString(), 10)].textAlign);\n }\n // Need to add width consideration with % value\n if (pdfGrid.style.allowHorizontalOverflow && !isNullOrUndefined(gridColumns[parseInt(i.toString(), 10)].width)\n && allowHorizontalOverflow) {\n pdfGrid.columns.getColumn(i + startIndex).width = typeof gridColumns[parseInt(i.toString(), 10)].width === 'number' ?\n gridColumns[parseInt(i.toString(), 10)].width * 0.75 :\n helper.getConvertedWidth(gridColumns[parseInt(i.toString(), 10)].width) * 0.75;\n }\n }\n };\n /**\n * set default style properties of each rows in exporting grid\n *\n * @param {PdfGridRow} row - specifies the PdfGridRow\n * @param {PdfBorders} border - specifies the PdfBorders\n * @returns {PdfGrid} returns the pdfgrid\n * @private\n */\n PdfExport.prototype.setRecordThemeStyle = function (row, border) {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.record)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.record.fontName) ?\n this.getFontFamily(this.gridTheme.record.fontName) : PdfFontFamily.Helvetica;\n var fontSize = !isNullOrUndefined(this.gridTheme.record.fontSize) ? this.gridTheme.record.fontSize : 9.75;\n var fontStyle = this.getFontStyle(this.gridTheme.record);\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.record.font)) {\n font = this.gridTheme.record.font;\n }\n row.style.setFont(font);\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.record.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.record.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n row.style.setTextBrush(new PdfSolidBrush(pdfColor));\n }\n else {\n row.style.setTextBrush(new PdfSolidBrush(new PdfColor(0, 0, 0)));\n }\n var borderRecord = this.gridTheme && this.gridTheme.record &&\n this.gridTheme.record.border ? this.getBorderStyle(this.gridTheme.record.border) : border;\n row.style.setBorder(borderRecord);\n return row;\n };\n /**\n * generate the formatted cell values\n *\n * @param {PdfBorders} border - specifies the border\n * @param {Column[]} columns - specifies the columns\n * @param {IGrid} gObj - specifies the IGrid\n * @param {Object[]} dataSource - specifies the datasource\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {number} startIndex - specifies the startindex\n * @param {PdfExportProperties} pdfExportProperties - specifies the pdfExportProperties\n * @param {ExportHelper} helper - specifies the helper\n * @param {number} rowIndex - specifies the rowIndex\n * @returns {number} returns the number of records\n * @private\n */\n PdfExport.prototype.processRecord = function (border, columns, gObj, dataSource, pdfGrid, startIndex, pdfExportProperties, helper, rowIndex) {\n var rows = helper.getGridRowModel(columns, dataSource, gObj, rowIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n rowIndex++;\n this.rowIndex = rowIndex;\n // create a new row and set default style properties\n var gridRow = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var cellLength = row.cells.length;\n for (var j = 0; j < cellLength; j++) {\n var gridCell = row.cells[parseInt(j.toString(), 10)];\n if (gridCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gridCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n var foreignKeyData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n foreignKeyData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, foreignKeyData);\n }\n var data = row.data;\n var cell = gridRow.cells.getCell(j);\n var args = {\n data: data,\n value: value,\n column: column,\n style: undefined,\n colSpan: 1,\n cell: cell\n };\n args.value = args.column.type === 'boolean' && typeof args.value === 'string' ? args.value :\n this.exportValueFormatter.formatCellValue(args);\n this.parent.trigger(events.pdfQueryCellInfo, args);\n if (!isNullOrUndefined(args.image)) {\n args.value = new PdfBitmap(args.image.base64);\n args.value.height = args.image.height || args.value.height;\n args.value.width = args.image.width || args.value.width;\n }\n cell.value = args.value;\n if (!isNullOrUndefined(args.hyperLink)) {\n cell.value = this.setHyperLink(args);\n }\n if (!isNullOrUndefined(args.style)) {\n this.processCellStyle(cell, args);\n }\n if (args.colSpan > 1) {\n if ((j + 1 + args.colSpan) > gridRow.cells.count) {\n args.colSpan = gridRow.cells.count - (j + 1);\n }\n cell.columnSpan = args.colSpan;\n for (var i = 1; i < cell.columnSpan; i++) {\n var spanCell = gridRow.cells.getCell(j + i);\n spanCell.value = '';\n }\n j += (args.colSpan - 1);\n }\n }\n if (row.isExpand) {\n var gridRow_1 = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var startIndexVal = this.parent.childGrid ? 0 : startIndex;\n var cell = gridRow_1.cells.getCell(startIndexVal);\n cell.columnSpan = gridRow_1.cells.count - (startIndexVal);\n cell.style.cellPadding = new PdfPaddings(10, 10, 10, 10);\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType) ?\n pdfExportProperties.exportType : 'AllPages';\n var returnValue = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnValue.childGrid;\n var element = returnValue.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n var args = { childGrid: childGridObj, row: row, cell: cell, exportProperties: pdfExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(cell, childGridObj, pdfExportProperties);\n childGridObj.appendTo(element);\n }\n this.parent.notify(events.exportRowDataBound, { type: 'pdf', rowObj: row });\n }\n return rowIndex;\n };\n PdfExport.prototype.setHyperLink = function (args) {\n // create the Text Web Link\n var textLink = new PdfTextWebLink();\n // set the hyperlink\n textLink.url = args.hyperLink.target;\n // set the link text\n textLink.text = args.hyperLink.displayText || args.hyperLink.target;\n // set the font\n textLink.font = new PdfStandardFont(PdfFontFamily.Helvetica, 9.75);\n // set the brush and pen for the text color\n textLink.brush = new PdfSolidBrush(new PdfColor(51, 102, 187));\n return textLink;\n };\n PdfExport.prototype.childGridCell = function (cell, childGridObj, pdfExportProperties) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n cell.value = _this.processGridExport(childGridObj, result, pdfExportProperties);\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return cell;\n };\n };\n PdfExport.prototype.processCellStyle = function (cell, args) {\n if (!isNullOrUndefined(args.style.backgroundColor)) {\n var backColor = this.hexToRgb(args.style.backgroundColor);\n cell.style.backgroundBrush = new PdfSolidBrush(new PdfColor(backColor.r, backColor.g, backColor.b));\n }\n if (!isNullOrUndefined(args.style.textAlignment)) {\n cell.style.stringFormat = this.getHorizontalAlignment(args.style.textAlignment);\n }\n if (!isNullOrUndefined(args.style.cellPadding)) {\n cell.style.cellPadding = args.style.cellPadding;\n }\n if (!isNullOrUndefined(args.style.verticalAlignment)) {\n cell.style.stringFormat = this.getVerticalAlignment(args.style.verticalAlignment, cell.style.stringFormat);\n }\n if (!isNullOrUndefined(args.style.textBrushColor)) {\n var textBrushColor = this.hexToRgb(args.style.textBrushColor);\n cell.style.textBrush = new PdfSolidBrush(new PdfColor(textBrushColor.r, textBrushColor.g, textBrushColor.b));\n }\n if (!isNullOrUndefined(args.style.textPenColor)) {\n var textPenColor = this.hexToRgb(args.style.textPenColor);\n cell.style.textPen = new PdfPen(new PdfColor(textPenColor.r, textPenColor.g, textPenColor.b));\n }\n if (!isNullOrUndefined(args.style.fontFamily) || !isNullOrUndefined(args.style.fontSize) || !isNullOrUndefined(args.style.bold) ||\n !isNullOrUndefined(args.style.italic) || !isNullOrUndefined(args.style.underline) || !isNullOrUndefined(args.style.strikeout)) {\n cell.style.font = this.getFont(args);\n }\n if (!isNullOrUndefined(args.style.border)) {\n var border = new PdfBorders();\n var borderWidth = args.style.border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? (borderWidth * 0.75) : (undefined);\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(args.style.border.color)) {\n var borderColor = this.hexToRgb(args.style.border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(args.style.border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(args.style.border.dashStyle);\n }\n border.all = pen;\n cell.style.borders = border;\n }\n if (!isNullOrUndefined(args.style.paragraphIndent)) {\n cell.style.stringFormat = new PdfStringFormat();\n cell.style.stringFormat.paragraphIndent = args.style.paragraphIndent;\n }\n };\n /**\n * set text alignment of each columns in exporting grid\n *\n * @param {string} textAlign - specifies the textAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @returns {PdfStringFormat} returns the PdfStringFormat\n * @private\n */\n PdfExport.prototype.getHorizontalAlignment = function (textAlign, format) {\n if (format === undefined) {\n format = new PdfStringFormat();\n }\n switch (textAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n case 'Left':\n format.alignment = PdfTextAlignment.Left;\n break;\n }\n return format;\n };\n /**\n * set vertical alignment of each columns in exporting grid\n *\n * @param {string} verticalAlign - specifies the verticalAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @param {string} textAlign - specifies the text align\n * @returns {PdfStringFormat} returns the PdfStringFormat\n * @private\n */\n PdfExport.prototype.getVerticalAlignment = function (verticalAlign, format, textAlign) {\n if (format === undefined) {\n format = new PdfStringFormat();\n format = this.getHorizontalAlignment(textAlign, format);\n }\n switch (verticalAlign) {\n case 'Bottom':\n format.lineAlignment = PdfVerticalAlignment.Bottom;\n break;\n case 'Middle':\n format.lineAlignment = PdfVerticalAlignment.Middle;\n break;\n case 'Top':\n format.lineAlignment = PdfVerticalAlignment.Top;\n break;\n }\n return format;\n };\n PdfExport.prototype.getFontFamily = function (fontFamily) {\n switch (fontFamily) {\n case 'TimesRoman':\n return 2;\n case 'Courier':\n return 1;\n case 'Symbol':\n return 3;\n case 'ZapfDingbats':\n return 4;\n default:\n return 0;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getFont = function (content) {\n if (content.font) {\n return content.font;\n }\n var fontSize = (!isNullOrUndefined(content.style.fontSize)) ? (content.style.fontSize * 0.75) : 9.75;\n var fontFamily = (!isNullOrUndefined(content.style.fontFamily)) ?\n (this.getFontFamily(content.style.fontFamily)) : PdfFontFamily.TimesRoman;\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(content.style.bold) && content.style.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(content.style.italic) && content.style.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(content.style.underline) && content.style.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(content.style.strikeout) && content.style.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return new PdfStandardFont(fontFamily, fontSize, fontStyle);\n };\n PdfExport.prototype.getPageNumberStyle = function (pageNumberType) {\n switch (pageNumberType) {\n case 'LowerLatin':\n return 2;\n case 'LowerRoman':\n return 3;\n case 'UpperLatin':\n return 4;\n case 'UpperRoman':\n return 5;\n default:\n return 1;\n }\n };\n PdfExport.prototype.setContentFormat = function (content, format) {\n if (!isNullOrUndefined(content.size)) {\n var width = content.size.width * 0.75;\n var height = content.size.height * 0.75;\n format = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);\n if (!isNullOrUndefined(content.style.hAlign)) {\n switch (content.style.hAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n default:\n format.alignment = PdfTextAlignment.Left;\n }\n }\n if (!isNullOrUndefined(content.style.vAlign)) {\n format = this.getVerticalAlignment(content.style.vAlign, format);\n }\n return { format: format, size: new SizeF(width, height) };\n }\n return null;\n };\n PdfExport.prototype.getPageSize = function (pageSize) {\n switch (pageSize) {\n case 'Letter':\n return new SizeF(612, 792);\n case 'Note':\n return new SizeF(540, 720);\n case 'Legal':\n return new SizeF(612, 1008);\n case 'A0':\n return new SizeF(2380, 3368);\n case 'A1':\n return new SizeF(1684, 2380);\n case 'A2':\n return new SizeF(1190, 1684);\n case 'A3':\n return new SizeF(842, 1190);\n case 'A5':\n return new SizeF(421, 595);\n case 'A6':\n return new SizeF(297, 421);\n case 'A7':\n return new SizeF(210, 297);\n case 'A8':\n return new SizeF(148, 210);\n case 'A9':\n return new SizeF(105, 148);\n // case 'A10':\n // return new SizeF(74, 105);\n case 'B0':\n return new SizeF(2836, 4008);\n case 'B1':\n return new SizeF(2004, 2836);\n case 'B2':\n return new SizeF(1418, 2004);\n case 'B3':\n return new SizeF(1002, 1418);\n case 'B4':\n return new SizeF(709, 1002);\n case 'B5':\n return new SizeF(501, 709);\n case 'Archa':\n return new SizeF(648, 864);\n case 'Archb':\n return new SizeF(864, 1296);\n case 'Archc':\n return new SizeF(1296, 1728);\n case 'Archd':\n return new SizeF(1728, 2592);\n case 'Arche':\n return new SizeF(2592, 3456);\n case 'Flsa':\n return new SizeF(612, 936);\n case 'HalfLetter':\n return new SizeF(396, 612);\n case 'Letter11x17':\n return new SizeF(792, 1224);\n case 'Ledger':\n return new SizeF(1224, 792);\n default:\n return new SizeF(595, 842);\n }\n };\n PdfExport.prototype.getDashStyle = function (dashStyle) {\n switch (dashStyle) {\n case 'Dash':\n return 1;\n case 'Dot':\n return 2;\n case 'DashDot':\n return 3;\n case 'DashDotDot':\n return 4;\n default:\n return 0;\n }\n };\n PdfExport.prototype.getPenFromContent = function (content) {\n var pen = new PdfPen(new PdfColor(0, 0, 0));\n if (!isNullOrUndefined(content.style) && content.style !== null && !isNullOrUndefined(content.style.penColor)) {\n var penColor = this.hexToRgb(content.style.penColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n return pen;\n };\n PdfExport.prototype.getBrushFromContent = function (content) {\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n /* tslint:disable-next-line:max-line-length */\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n return brush;\n };\n PdfExport.prototype.hexToRgb = function (hex) {\n if (hex === null || hex === '' || hex.length !== 7) {\n throw new Error('please set valid hex value for color...');\n }\n hex = hex.substring(1);\n var bigint = parseInt(hex, 16);\n var r = (bigint >> 16) & 255;\n var g = (bigint >> 8) & 255;\n var b = bigint & 255;\n return { r: r, g: g, b: b };\n };\n PdfExport.prototype.getFontStyle = function (theme) {\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(theme) && theme.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(theme) && theme.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(theme) && theme.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(theme) && theme.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return fontStyle;\n };\n PdfExport.prototype.getBorderStyle = function (border) {\n var borders = new PdfBorders();\n if (!isNullOrUndefined(border)) {\n var borderWidth = border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? borderWidth * 0.75 : undefined;\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(border.color)) {\n var borderColor = this.hexToRgb(border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(border.dashStyle);\n }\n borders.all = pen;\n }\n else {\n borders.all = new PdfPen(new PdfColor(234, 234, 234));\n }\n return borders;\n };\n PdfExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest as closestElement, removeClass, classList, remove } from '@syncfusion/ej2-base';\nimport { getElementIndex, inArray, parentsUntil, getPosition, isActionPrevent } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Reorder` module is used for reordering columns.\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for the Grid reorder module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Reorder(parent) {\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.reorderComplete, this.onActionComplete, this);\n this.parent.on(events.columnDrag, this.drag, this);\n this.parent.on(events.columnDragStart, this.dragStart, this);\n this.parent.on(events.columnDragStop, this.dragStop, this);\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.headerRefreshed, this.createReorderElement, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n Reorder.prototype.chkDropPosition = function (srcElem, destElem) {\n var col = this.parent.getColumnByUid(destElem.firstElementChild.getAttribute('e-mappinguid'));\n var bool = col ? !col.lockColumn : true;\n return ((srcElem.parentElement.isEqualNode(destElem.parentElement) || this.parent.enableColumnVirtualization)\n || (this.parent.isFrozenGrid()\n && Array.prototype.indexOf.call(closestElement(srcElem, 'thead').children, srcElem.parentElement)\n === Array.prototype.indexOf.call(closestElement(destElem, 'thead').children, destElem.parentElement)))\n && this.targetParentContainerIndex(srcElem, destElem) > -1 && bool;\n };\n Reorder.prototype.chkDropAllCols = function (srcElem, destElem) {\n var isFound;\n var headers = this.getHeaderCells();\n var header;\n while (!isFound && headers.length > 0) {\n header = headers.pop();\n isFound = srcElem !== header && this.targetParentContainerIndex(srcElem, destElem) > -1;\n }\n return isFound;\n };\n Reorder.prototype.findColParent = function (col, cols, parent) {\n // eslint-disable-next-line no-self-assign\n parent = parent;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (col === cols[parseInt(i.toString(), 10)]) {\n return true;\n }\n else if (cols[parseInt(i.toString(), 10)].columns) {\n var cnt = parent.length;\n parent.push(cols[parseInt(i.toString(), 10)]);\n if (!this.findColParent(col, cols[parseInt(i.toString(), 10)].columns, parent)) {\n parent.splice(cnt, parent.length - cnt);\n }\n else {\n return true;\n }\n }\n }\n return false;\n };\n Reorder.prototype.getColumnsModel = function (cols, isNotStackedHeader) {\n var columnModel = [];\n var subCols = [];\n if (!this.parent.getFrozenColumns() && this.parent.isFrozenGrid()) {\n return this.parent.getColumns();\n }\n else {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n else if (isNotStackedHeader) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n if (cols[parseInt(i.toString(), 10)].columns) {\n subCols = subCols.concat(cols[parseInt(i.toString(), 10)].columns);\n }\n }\n if (subCols.length) {\n columnModel = columnModel.concat(this.getColumnsModel(subCols));\n }\n }\n return columnModel;\n };\n Reorder.prototype.headerDrop = function (e) {\n var gObj = this.parent;\n var dropElement = this.element.querySelector('.e-headercelldiv') || this.element.querySelector('.e-stackedheadercelldiv');\n var uId = dropElement.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uId);\n if (!closestElement(e.target, 'th') || (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column });\n return;\n }\n var destElem = closestElement(e.target, '.e-headercell');\n var destElemDiv = destElem.querySelector('.e-headercelldiv') || destElem.querySelector('.e-stackedheadercelldiv');\n var destElemUid = destElemDiv.getAttribute('e-mappinguid');\n if (!isNullOrUndefined(destElemUid)) {\n var destColumn = gObj.getColumnByUid(destElemUid);\n if (isNullOrUndefined(destColumn) || !destColumn.allowReordering || destColumn.lockColumn) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column, destColumn: destColumn });\n return;\n }\n }\n if (destElem && !(!this.chkDropPosition(this.element, destElem) || !this.chkDropAllCols(this.element, destElem))) {\n if (this.parent.enableColumnVirtualization) {\n var columns = this.parent.columns;\n var sourceUid_1 = this.element.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n var col = this.parent.columns.filter(function (col) { return col.uid === sourceUid_1; });\n var colMatchIndex_1 = null;\n var column_1 = col[0];\n var destUid_1 = destElem.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n columns.some(function (col, index) {\n if (col.uid === destUid_1) {\n colMatchIndex_1 = index;\n return col.uid === destUid_1;\n }\n return false;\n });\n if (!isNullOrUndefined(colMatchIndex_1)) {\n this.moveColumns(colMatchIndex_1, column_1);\n }\n }\n else {\n var newIndex = this.targetParentContainerIndex(this.element, destElem);\n var uid = this.element.firstElementChild.getAttribute('e-mappinguid');\n this.destElement = destElem;\n this.parent.notify(events.setReorderDestinationElement, { ele: destElem });\n if (uid) {\n this.moveColumns(newIndex, this.parent.getColumnByUid(uid));\n }\n else {\n var headers = this.getHeaderCells();\n var oldIdx = getElementIndex(this.element, headers);\n var columns = this.getColumnsModel(this.parent.columns);\n this.moveColumns(newIndex, columns[parseInt(oldIdx.toString(), 10)]);\n }\n }\n }\n };\n Reorder.prototype.isActionPrevent = function (gObj) {\n return isActionPrevent(gObj);\n };\n Reorder.prototype.moveColumns = function (destIndex, column, reorderByColumn, preventRefresh) {\n var gObj = this.parent;\n if (this.isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.moveColumns, arg1: destIndex, arg2: column });\n return;\n }\n var isFrozen = !gObj.getFrozenColumns() && gObj.isFrozenGrid();\n var parent = this.getColParent(column, this.parent.columns);\n var cols = parent ? parent.columns : isFrozen ? this.parent.getColumns() : this.parent.columns;\n var srcIdx = inArray(column, cols);\n if (((this.parent.isFrozenGrid() && parent) || this.parent.lockcolPositionCount) && !reorderByColumn &&\n !this.parent.enableColumnVirtualization) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === column.field) {\n srcIdx = i;\n break;\n }\n }\n var col = this.parent.getColumnByUid(this.destElement.firstElementChild.getAttribute('e-mappinguid'));\n if (col) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === col.field) {\n destIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].headerText === this.destElement.innerText.trim()) {\n destIndex = i;\n }\n }\n }\n }\n if (!gObj.allowReordering || srcIdx === destIndex || srcIdx === -1 || destIndex === -1) {\n return;\n }\n cols.splice(destIndex, 0, cols.splice(srcIdx, 1)[0]);\n var args = { column: column, destIndex: destIndex, columns: cols, parent: parent, cancel: false };\n gObj.notify(events.refreshFrozenColumns, args);\n if (args.cancel) {\n return;\n }\n gObj.getColumns(true);\n gObj.notify(events.columnPositionChanged, { fromIndex: destIndex, toIndex: srcIdx });\n if (preventRefresh !== false) {\n gObj.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'reorder', fromIndex: destIndex, toIndex: srcIdx, toColumnUid: column.uid\n });\n }\n };\n Reorder.prototype.targetParentContainerIndex = function (srcElem, destElem) {\n var cols = !this.parent.getFrozenColumns() && this.parent.isFrozenGrid() ? this.parent.getColumns() :\n this.parent.columns;\n var headers = this.getHeaderCells();\n var stackedHdrColumn = this.parent.getStackedColumns(cols);\n var stackedCols = [];\n if (stackedHdrColumn.length) {\n stackedCols = this.getAllStackedheaderParentColumns(headers);\n }\n var flatColumns = stackedHdrColumn.length && stackedCols.length ?\n this.getColumnsModel(stackedCols) : this.getColumnsModel(cols, true);\n var parent = this.getColParent(flatColumns[getElementIndex(srcElem, headers)], cols);\n cols = parent ? parent.columns : cols;\n return inArray(flatColumns[getElementIndex(destElem, headers)], cols);\n };\n Reorder.prototype.getAllStackedheaderParentColumns = function (headers) {\n var stackedCols = [];\n for (var i = 0; i < headers.length; i++) {\n if (headers[parseInt(i.toString(), 10)].classList.contains('e-hide')) {\n headers.splice(i, 1);\n i--;\n }\n else if (headers[parseInt(i.toString(), 10)].closest('thead').firstChild === headers[parseInt(i.toString(), 10)].parentElement) {\n stackedCols.push(this.parent.getColumnByUid(headers[parseInt(i.toString(), 10)].firstElementChild.getAttribute('e-mappinguid')));\n }\n }\n return stackedCols;\n };\n Reorder.prototype.getHeaderCells = function () {\n var frozenColumns = this.parent.getFrozenColumns();\n if (frozenColumns || this.parent.isFrozenGrid() || this.parent.lockcolPositionCount) {\n var fTh = void 0;\n var mTh = void 0;\n var fHeaders = [];\n var fRows = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-columnheader'));\n if (frozenColumns || this.parent.isFrozenGrid()) {\n var mRows = [].slice.call(this.parent.getHeaderContent()\n .querySelector('.' + literals.movableHeader).getElementsByClassName('e-columnheader'));\n for (var i = 0; i < fRows.length; i++) {\n fTh = [].slice.call(fRows[parseInt(i.toString(), 10)].getElementsByClassName('e-headercell'));\n mTh = [].slice.call(mRows[parseInt(i.toString(), 10)].getElementsByClassName('e-headercell'));\n var isAvail = void 0;\n for (var k = 0; k < fTh.length; k++) {\n for (var j = 0; j < mTh.length; j++) {\n if (mTh[parseInt(j.toString(), 10)].innerText === fTh[parseInt(k.toString(), 10)].innerText && parseInt(mTh[parseInt(j.toString(), 10)].getAttribute('data-colindex'), 10) ===\n parseInt(fTh[parseInt(k.toString(), 10)].getAttribute('data-colindex'), 10)) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([fTh[parseInt(k.toString(), 10)]]);\n }\n }\n for (var j = 0; j < mTh.length; j++) {\n fHeaders.push(mTh[parseInt(j.toString(), 10)]);\n }\n }\n if (this.parent.getFrozenRightColumnsCount()) {\n var frRows = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-right-header')\n .getElementsByClassName('e-columnheader'));\n var frTh = [].slice.call(frRows[0].getElementsByClassName('e-headercell'));\n for (var i = 0; i < frTh.length; i++) {\n fHeaders.push(frTh[parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n for (var i = 0; i < fRows.length; i++) {\n mTh = [].slice.call(fRows[parseInt(i.toString(), 10)].getElementsByClassName('e-headercell'));\n for (var k = 0; k < mTh.length; k++) {\n var isAvail = void 0;\n for (var j = k + 1; j < mTh.length; j++) {\n if (mTh[parseInt(j.toString(), 10)].innerText === mTh[parseInt(k.toString(), 10)].innerText && parseInt(mTh[parseInt(j.toString(), 10)].getAttribute('data-colindex'), 10) ===\n parseInt(mTh[parseInt(k.toString(), 10)].getAttribute('data-colindex'), 10)) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([mTh[parseInt(k.toString(), 10)]]);\n }\n }\n }\n }\n return fHeaders;\n }\n else {\n return [].slice.call(this.parent.element.getElementsByClassName('e-headercell'));\n }\n };\n Reorder.prototype.getColParent = function (column, columns) {\n var parents = [];\n this.findColParent(column, columns, parents);\n return parents[parents.length - 1];\n };\n Reorder.prototype.reorderSingleColumn = function (fromFName, toFName) {\n var fColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === fromFName; })[0]\n : this.parent.getColumnByField(fromFName);\n var toColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === toFName; })[0]\n : this.parent.getColumnByField(toFName);\n if ((!isNullOrUndefined(fColumn) && (!fColumn.allowReordering || fColumn.lockColumn)) ||\n (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || fColumn.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: fColumn, destColumn: toColumn });\n return;\n }\n var column = toColumn;\n var parent = this.getColParent(column, this.parent.columns);\n var columns = parent ? parent.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, fColumn, true);\n }\n };\n Reorder.prototype.reorderMultipleColumns = function (fromFNames, toFName) {\n var toIndex = this.parent.getColumnIndexByField(toFName);\n var toColumn = this.parent.getColumnByField(toFName);\n if (toIndex < 0 || (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n return;\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn)) {\n return;\n }\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByIndex(toIndex);\n var parent_1 = this.getColParent(column, this.parent.columns);\n var columns = parent_1 ? parent_1.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]), true, true);\n }\n if (this.parent.getColumnIndexByField(fromFNames[i + 1]) >= destIndex) {\n toIndex++; //R to L\n }\n }\n };\n Reorder.prototype.moveTargetColumn = function (column, toIndex) {\n if (toIndex > -1) {\n this.moveColumns(toIndex, column, true);\n }\n };\n Reorder.prototype.reorderSingleColumnByTarget = function (fieldName, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByField(fieldName), toIndex);\n };\n Reorder.prototype.reorderMultipleColumnByTarget = function (fieldName, toIndex) {\n for (var i = 0; i < fieldName.length; i++) {\n this.reorderSingleColumnByTarget(fieldName[parseInt(i.toString(), 10)], toIndex);\n }\n };\n /**\n * Changes the position of the Grid columns by field names.\n *\n * @param {string | string[]} fromFName - Defines the origin field names.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n Reorder.prototype.reorderColumns = function (fromFName, toFName) {\n if (typeof fromFName === 'string') {\n this.reorderSingleColumn(fromFName, toFName);\n this.fromCol = fromFName;\n }\n else {\n this.reorderMultipleColumns(fromFName, toFName);\n this.fromCol = fromFName[0];\n }\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByIndex(fromIndex), toIndex);\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {string | string[]} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (typeof fieldName === 'string') {\n this.reorderSingleColumnByTarget(fieldName, toIndex);\n }\n else {\n this.reorderMultipleColumnByTarget(fieldName, toIndex);\n }\n };\n Reorder.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.createReorderElement();\n }\n };\n Reorder.prototype.createReorderElement = function (e) {\n if (e && e.args.isXaxis) {\n this.setDisplay('none');\n }\n var header = this.parent.element.querySelector('.' + literals.headerContent);\n this.upArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderuparrow e-reorderuparrow', attrs: { style: 'display:none' } }));\n this.downArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderdownarrow e-reorderdownarrow', attrs: { style: 'display:none' } }));\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specified the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, { type: events.actionComplete }));\n var target = this.fromCol && this.parent.getColumnHeaderByField(this.fromCol);\n if (target) {\n this.parent.focusModule.onClick({ target: target }, true);\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + literals.gridHeader) &&\n !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.upArrow.parentNode) {\n remove(this.upArrow);\n }\n if (this.downArrow.parentNode) {\n remove(this.downArrow);\n }\n this.parent.off(events.headerDrop, this.headerDrop);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.reorderComplete, this.onActionComplete);\n this.parent.off(events.columnDrag, this.drag);\n this.parent.off(events.columnDragStart, this.dragStart);\n this.parent.off(events.columnDragStop, this.dragStop);\n this.parent.off(events.headerRefreshed, this.createReorderElement);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.destroy, this.destroy);\n //call ejdrag and drop destroy\n };\n Reorder.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n switch (e.action) {\n case 'ctrlLeftArrow':\n case 'ctrlRightArrow':\n // eslint-disable-next-line no-case-declarations\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n var visibleCols = gObj.getVisibleColumns();\n var index = visibleCols.indexOf(column);\n var toCol = e.action === 'ctrlLeftArrow' ? visibleCols[index - 1] : visibleCols[index + 1];\n if (toCol && toCol.field && column.field) {\n this.reorderColumns(column.field, toCol.field);\n }\n }\n break;\n }\n };\n Reorder.prototype.drag = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var closest = closestElement(target, '.e-headercell:not(.e-stackedHeaderCell)');\n var cloneElement = gObj.element.querySelector('.e-cloneproperties');\n var content = gObj.isFrozenGrid() ? gObj.getMovableVirtualContent() : gObj.getContent().firstElementChild;\n var isLeft = this.x > getPosition(e.event).x + content.scrollLeft;\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n this.setDisplay('none');\n this.stopTimer();\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n this.updateScrollPostion(e.event);\n if (closest && !closest.isEqualNode(this.element)) {\n target = closest;\n //consider stacked, detail header cell\n if (!(!this.chkDropPosition(this.element, target) || !this.chkDropAllCols(this.element, target))) {\n this.updateArrowPosition(target, isLeft);\n classList(target, ['e-allowDrop', 'e-reorderindicate'], []);\n }\n else if (!(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n gObj.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: e.column });\n };\n Reorder.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var x = getPosition(e).x;\n var cliRect = this.parent.element.getBoundingClientRect();\n var cliRectBaseRight = cliRect.right;\n if (this.parent.isFrozenGrid()) {\n this.updateFrozenScrollPosition(x, cliRect);\n }\n else {\n var cliRectBaseLeft = cliRect.left;\n var scrollElem_1 = this.parent.getContent().firstElementChild;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem_1, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem_1, false); }, 50);\n }\n }\n };\n Reorder.prototype.updateFrozenScrollPosition = function (x, cliRect) {\n var _this = this;\n var scrollElem = this.parent.getContent().querySelector('.' + literals.movableContent);\n var mhdrCliRect = this.parent.element.querySelector('.' + literals.movableHeader).getBoundingClientRect();\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var cliRectBaseRight = right ? mhdrCliRect.right : cliRect.right;\n var cliRectBaseLeft = left ? mhdrCliRect.left : cliRect.left;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, false); }, 50);\n }\n };\n Reorder.prototype.setScrollLeft = function (scrollElem, isLeft) {\n var scrollLeft = scrollElem.scrollLeft;\n scrollElem.scrollLeft = scrollElem.scrollLeft + (isLeft ? -5 : 5);\n if (scrollLeft !== scrollElem.scrollLeft) {\n this.setDisplay('none');\n }\n };\n Reorder.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Reorder.prototype.updateArrowPosition = function (target, isLeft) {\n var cliRect = target.getBoundingClientRect();\n var cliRectBase = this.parent.element.getBoundingClientRect();\n if ((isLeft && cliRect.left < cliRectBase.left) || (!isLeft && cliRect.right > cliRectBase.right)) {\n return;\n }\n if (this.parent.isFrozenGrid() && target.classList.contains('e-headercell')) {\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var dropEle = this.element.querySelector('.e-headercelldiv');\n var dropCol = dropEle ? this.parent.getColumnByUid(dropEle.getAttribute('data-uid')) : null;\n var col = this.parent.getColumnByUid(target.firstElementChild.getAttribute('e-mappinguid'));\n var fhdrWidth = Math.round(this.parent.getFrozenVirtualHeader().getBoundingClientRect().right);\n var mhdrRight = Math.round(this.parent.getMovableVirtualHeader().getBoundingClientRect().right);\n if (col) {\n if (left && !right && this.parent.getNormalizedColumnIndex(col.uid) >= left\n && ((isLeft && Math.round(cliRect.left) < fhdrWidth) || (!isLeft && mhdrRight < cliRect.right))) {\n return;\n }\n if (!left && right && dropCol && dropCol.getFreezeTableName() !== col.getFreezeTableName()\n && (!isLeft && Math.round(cliRect.right) < fhdrWidth)) {\n return;\n }\n }\n }\n var isSticky = this.parent.getHeaderContent().classList.contains('e-sticky');\n this.upArrow.style.top = isSticky ? cliRect.top + cliRect.height + 'px' : cliRect.top + cliRect.height - cliRectBase.top + 'px';\n this.downArrow.style.top = isSticky ? cliRect.top - 7 + 'px' : cliRect.top - cliRectBase.top - 7 + 'px';\n this.upArrow.style.left = this.downArrow.style.left = isSticky ? (isLeft ? cliRect.left : cliRect.right) - 4 + 'px' :\n (isLeft ? cliRect.left : cliRect.right) - cliRectBase.left - 4 + 'px';\n this.setDisplay('');\n };\n Reorder.prototype.dragStart = function (e) {\n var gObj = this.parent;\n var target = e.target;\n this.element = target.classList.contains('e-headercell') ? target :\n parentsUntil(target, 'e-headercell');\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var content = gObj.isFrozenGrid() ? gObj.getMovableVirtualContent() : gObj.getContent().firstElementChild;\n this.x = getPosition(e.event).x + content.scrollLeft;\n gObj.trigger(events.columnDragStart, {\n target: target, draggableType: 'headercell', column: e.column\n });\n };\n Reorder.prototype.dragStop = function (e) {\n var gObj = this.parent;\n this.setDisplay('none');\n this.stopTimer();\n if (!e.cancel) {\n gObj.trigger(events.columnDrop, { target: e.target, draggableType: 'headercell', column: e.column });\n }\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n };\n Reorder.prototype.setDisplay = function (display) {\n this.upArrow.style.display = display;\n this.downArrow.style.display = display;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} return the module name\n * @private\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { EventHandler, detach, formatUnit, Browser, closest } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as events from '../base/constant';\nimport { getScrollBarWidth, parentsUntil, gridActionHandler, Global, getExactFrozenMovableColumn } from '../base/util';\nimport { isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nexport var resizeClassList = {\n root: 'e-rhandler',\n suppress: 'e-rsuppress',\n icon: 'e-ricon',\n helper: 'e-rhelper',\n header: 'th.e-headercell',\n cursor: 'e-rcursor'\n};\n/**\n * `Resize` module is used to handle Resize to fit for columns.\n *\n * @hidden\n * @private\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for the Grid resize module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Resize(parent) {\n this.tapped = false;\n this.isDblClk = true;\n /** @hidden */\n this.resizeProcess = false;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n var columnName = (fName === undefined || fName === null || fName.length <= 0) ?\n this.parent.getColumns().map(function (x) { return x.field; }) : (typeof fName === 'string') ? [fName] : fName;\n this.parent.isAutoFitColumns = true;\n this.findColumn(columnName);\n };\n Resize.prototype.autoFit = function () {\n var newarray = this.parent.getColumns().filter(function (c) { return c.autoFit === true; })\n .map(function (c) { return c.field || c.headerText; });\n if (newarray.length > 0) {\n this.autoFitColumns(newarray);\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n this.widthService.setWidthToTable();\n }\n };\n Resize.prototype.resizeColumn = function (fName, index, id) {\n var gObj = this.parent;\n var tWidth = 0;\n var headerTable;\n var contentTable;\n var footerTable;\n var headerDivTag = 'e-gridheader';\n var contentDivTag = literals.gridContent;\n var footerDivTag = literals.gridFooter;\n var indentWidth = 0;\n var uid = id ? id : this.parent.getUidByColumnField(fName);\n var columnIndex = this.parent.getNormalizedColumnIndex(uid);\n var headerTextClone;\n var contentTextClone;\n var footerTextClone;\n var columnIndexByField = this.parent.getColumnIndexByField(fName);\n var left = gObj.getFrozenColumns() || gObj.getFrozenLeftColumnsCount();\n var movable = gObj.getMovableColumnsCount();\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (gObj.isFrozenGrid()) {\n var col = gObj.getColumnByField(fName);\n if (col.getFreezeTableName() === literals.frozenLeft) {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \")\");\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \")\");\n }\n }\n else if (col.getFreezeTableName() === 'movable') {\n headerTable = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).children[0];\n contentTable = gObj.getContent().querySelector('.' + literals.movableContent).children[0];\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - left) + 1) + \")\");\n if (footerTable) {\n footerTable = gObj.getFooterContent().querySelector('.e-movablefootercontent').children[0];\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - left) + 1) + \")\");\n }\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n headerTable = gObj.getHeaderContent().querySelector('.e-frozen-right-header').children[0];\n contentTable = gObj.getContent().querySelector('.e-frozen-right-content').children[0];\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - (left + movable)) + 1) + \")\");\n if (footerTable) {\n footerTable = gObj.getFooterContent().querySelector('.e-movablefootercontent').children[0];\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - (left + movable)) + 1) + \")\");\n }\n }\n }\n else {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td.e-rowcell:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption):not(.e-detailcell)\");\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n }\n }\n var indentWidthClone = [].slice.call(headerTable.querySelector('tr').getElementsByClassName('e-grouptopleftcell'));\n if (indentWidthClone.length > 0) {\n for (var i = 0; i < indentWidthClone.length; i++) {\n indentWidth += indentWidthClone[parseInt(i.toString(), 10)].offsetWidth;\n }\n }\n var detailsElement = contentTable.querySelector('.e-detailrowcollapse') ||\n contentTable.querySelector('.e-detailrowexpand');\n if ((this.parent.detailTemplate || this.parent.childGrid) && detailsElement) {\n indentWidth += detailsElement.offsetWidth;\n }\n var headerText = [headerTextClone];\n var contentText = [];\n var footerText = [];\n if (footerTable) {\n for (var i = 0; i < footerTextClone.length; i++) {\n footerText[parseInt(i.toString(), 10)] = footerTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n }\n for (var i = 0; i < contentTextClone.length; i++) {\n contentText[parseInt(i.toString(), 10)] = contentTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n var wHeader = this.createTable(headerTable, headerText, headerDivTag);\n var wFooter = null;\n var wContent = null;\n if (gObj.getCurrentViewRecords().length) {\n wContent = this.createTable(contentTable, contentText, contentDivTag);\n }\n if (footerText.length) {\n wFooter = this.createTable(footerTable, footerText, footerDivTag);\n }\n var columnbyindex = gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)];\n var width = columnbyindex.width = formatUnit(Math.max(wHeader, wContent, wFooter));\n var colMaxWidth = columnbyindex.maxWidth && parseFloat(columnbyindex.maxWidth.toString());\n if (parseInt(width, 10) > colMaxWidth) {\n columnbyindex.width = colMaxWidth;\n }\n this.widthService.setColumnWidth(gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)]);\n var result = gObj.getColumns().some(function (x) { return x.width === null\n || x.width === undefined || x.width.length <= 0; });\n if (result === false) {\n var element = void 0;\n if (this.parent.isAutoFitColumns && gObj.isFrozenGrid()) {\n var frozenMovableColumns = getExactFrozenMovableColumn(this.parent);\n if (columnbyindex.freezeTable === 'frozen-left') {\n element = frozenMovableColumns.frozenLeft;\n }\n else if (columnbyindex.freezeTable === 'movable') {\n element = frozenMovableColumns.movable;\n }\n else {\n element = frozenMovableColumns.frozenRight;\n }\n }\n else {\n element = gObj.getColumns();\n }\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].visible) {\n tWidth = tWidth + parseFloat(element[parseInt(i.toString(), 10)].width);\n }\n }\n }\n var calcTableWidth = tWidth + indentWidth;\n if (tWidth > 0 && !gObj.isFrozenGrid()) {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }));\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n calcTableWidth = '100%';\n }\n headerTable.style.width = formatUnit(calcTableWidth);\n contentTable.style.width = formatUnit(calcTableWidth);\n if (!isNullOrUndefined(footerTable)) {\n footerTable.style.width = formatUnit(calcTableWidth);\n }\n }\n if (gObj.isFrozenGrid()) {\n if (this.parent.isAutoFitColumns) {\n headerTable.style.width = formatUnit(calcTableWidth);\n contentTable.style.width = formatUnit(calcTableWidth);\n }\n this.widthService.refreshFrozenScrollbar();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n headerTable.classList.add('e-tableborder');\n contentTable.classList.add('e-tableborder');\n }\n else {\n headerTable.classList.remove('e-tableborder');\n contentTable.classList.remove('e-tableborder');\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n Resize.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.widthService = null;\n this.unwireEvents();\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n Resize.prototype.findColumn = function (fName) {\n for (var i = 0; i < fName.length; i++) {\n var fieldName = fName[parseInt(i.toString(), 10)];\n var columnIndex = this.parent.getColumnIndexByField(fieldName);\n var column = this.parent.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (columnIndex > -1 && !isNullOrUndefined(column) && column.visible === true) {\n this.resizeColumn(fieldName, columnIndex);\n }\n }\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n };\n /**\n * To create table for autofit\n *\n * @param {Element} table - specifies the table\n * @param {Element[]} text - specifies the text\n * @param {string} tag - specifies the tag name\n * @returns {number} returns the number\n * @hidden\n */\n Resize.prototype.createTable = function (table, text, tag) {\n var myTableDiv = this.parent.createElement('div');\n myTableDiv.className = this.parent.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.parent.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.parent.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table.className;\n myTable.classList.add('e-resizetable');\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var myTr = this.parent.createElement('tr');\n for (var i = 0; i < text.length; i++) {\n var tr = myTr.cloneNode();\n tr.className = table.querySelector('tr').className;\n tr.appendChild(text[parseInt(i.toString(), 10)]);\n myTable.appendChild(tr);\n }\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n var offsetWidthValue = myTable.getBoundingClientRect().width;\n document.body.removeChild(myTableDiv);\n return Math.ceil(offsetWidthValue);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerRefreshed, this.refreshHeight, this);\n this.parent.on(events.initialEnd, this.wireEvents, this);\n this.parent.on(events.contentReady, this.autoFit, this);\n this.parent.on(events.refreshHandlers, this.refreshHeight, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.headerRefreshed, this.refreshHeight);\n this.parent.off(events.initialEnd, this.wireEvents);\n this.parent.off(events.refreshHandlers, this.refreshHeight);\n this.parent.off(events.destroy, this.destroy);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.render = function () {\n this.unwireEvents();\n this.wireEvents();\n this.setHandlerHeight();\n };\n Resize.prototype.refreshHeight = function () {\n if (this.parent.getHeaderTable()) {\n var element = this.getResizeHandlers();\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].parentElement.offsetHeight > 0) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n }\n this.setHandlerHeight();\n }\n };\n Resize.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart, this);\n EventHandler.add(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit, this);\n };\n Resize.prototype.unwireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart);\n EventHandler.remove(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit);\n };\n Resize.prototype.getResizeHandlers = function () {\n return this.parent.isFrozenGrid() ?\n [].slice.call(this.parent.getHeaderContent().getElementsByClassName(resizeClassList.root))\n : [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.root));\n };\n Resize.prototype.setHandlerHeight = function () {\n var element = [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.suppress));\n for (var i = 0; i < element.length; i++) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.callAutoFit = function (e) {\n if (e.target.classList.contains('e-rhandler')) {\n var col = this.getTargetColumn(e);\n if (col.columns) {\n return;\n }\n this.resizeColumn(col.field, this.parent.getNormalizedColumnIndex(col.uid), col.uid);\n var header = closest(e.target, resizeClassList.header);\n header.classList.add('e-resized');\n }\n };\n Resize.prototype.touchResizeStart = function (e) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n return this.resizeStart(e);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.callAutoFit(e);\n }\n };\n Resize.prototype.resizeStart = function (e) {\n var _this = this;\n if (e.target.classList.contains('e-rhandler')) {\n if (!this.helper) {\n if (this.getScrollBarWidth() === 0) {\n this.resizeProcess = true;\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n for (var _i = 0, _a = this.refreshColumnWidth(); _i < _a.length; _i++) {\n var col = _a[_i];\n this.widthService.setColumnWidth(col);\n }\n this.widthService.setWidthToTable();\n this.resizeProcess = false;\n }\n this.refreshStackedColumnWidth();\n this.element = e.target;\n if (this.parent.getVisibleFrozenColumns()) {\n var mtbody = this.parent.getMovableContentTbody();\n var ftbody = this.parent.getFrozenLeftContentTbody();\n var frtbody = this.parent.getFrozenRightContentTbody();\n var mtr = [].slice.call(mtbody.childNodes);\n var ftr = [].slice.call(ftbody.childNodes);\n var frTr = [];\n if (this.parent.getFrozenMode() === literals.leftRight && frtbody) {\n frTr = [].slice.call(frtbody.childNodes);\n }\n var _loop_1 = function (i) {\n gridActionHandler(this_1.parent, function (tableName, row) {\n if (_this.parent.rowHeight) {\n row[parseInt(i.toString(), 10)].style.height = _this.parent.rowHeight + 'px';\n }\n else {\n row[parseInt(i.toString(), 10)].style.removeProperty('height');\n }\n }, [ftr, mtr, frTr]);\n };\n var this_1 = this;\n for (var i = 0; i < mtr.length; i++) {\n _loop_1(i);\n }\n }\n this.parentElementWidth = this.parent.element.getBoundingClientRect().width;\n this.appendHelper();\n this.column = this.getTargetColumn(e);\n this.pageX = this.getPointX(e);\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n if (this.parent.enableRtl) {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n else {\n this.minMove = parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n }\n else if (this.parent.enableRtl) {\n this.minMove = parseFloat(this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n else {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n this.minMove += this.pageX;\n }\n if (Browser.isDevice && !this.helper.classList.contains(resizeClassList.icon)) {\n this.helper.classList.add(resizeClassList.icon);\n EventHandler.add(document, Browser.touchStartEvent, this.removeHelper, this);\n EventHandler.add(this.helper, Browser.touchStartEvent, this.resizeStart, this);\n }\n else {\n var args = { e: e, column: this.column };\n this.parent.trigger(events.resizeStart, args, function (args) {\n if (args.cancel || _this.parent.isEdit) {\n _this.cancelResizeAction();\n return;\n }\n EventHandler.add(document, Browser.touchEndEvent, _this.resizeEnd, _this);\n EventHandler.add(_this.parent.element, Browser.touchMoveEvent, _this.resizing, _this);\n _this.updateCursor('add');\n });\n }\n }\n };\n Resize.prototype.cancelResizeAction = function (removeEvents) {\n if (removeEvents) {\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n }\n if (Browser.isDevice) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n }\n detach(this.helper);\n this.refresh();\n };\n Resize.prototype.getWidth = function (width, minWidth, maxWidth) {\n if (minWidth && width < minWidth) {\n return minWidth;\n }\n else if ((maxWidth && width > maxWidth)) {\n return maxWidth;\n }\n else {\n return width;\n }\n };\n Resize.prototype.updateResizeEleHeight = function () {\n var elements = [].slice.call(this.parent.getHeaderContent().getElementsByClassName('e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[parseInt(i.toString(), 10)].style.height = this.element.parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.getColData = function (column, mousemove) {\n return {\n width: parseFloat(isNullOrUndefined(this.widthService.getWidth(column)) || this.widthService.getWidth(column) === 'auto' ? '0'\n : this.widthService.getWidth(column).toString()) + mousemove,\n minWidth: column.minWidth ? parseFloat(column.minWidth.toString()) : null,\n maxWidth: column.maxWidth ? parseFloat(column.maxWidth.toString()) : null\n };\n };\n Resize.prototype.resizing = function (e) {\n if (isNullOrUndefined(this.column)) {\n return;\n }\n var offsetWidth = 0;\n if (isNullOrUndefined(this.column)) {\n offsetWidth = parentsUntil(this.element, 'th').offsetWidth;\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.setHelperHeight();\n }\n var pageX = this.getPointX(e);\n var mousemove = this.parent.enableRtl ? -(pageX - this.pageX) : (pageX - this.pageX);\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n mousemove = this.parent.enableRtl ? (pageX - this.pageX) : (this.pageX - pageX);\n }\n var colData = this.getColData(this.column, mousemove);\n if (!colData.width) {\n colData.width = closest(this.element, 'th').offsetWidth;\n }\n var width = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n this.parent.log('resize_min_max', { column: this.column, width: width });\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n if ((this.parent.enableRtl && this.minMove >= pageX) || (!this.parent.enableRtl && this.minMove <= pageX)) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n }\n if ((this.column.getFreezeTableName() !== literals.frozenRight\n && ((!this.parent.enableRtl && this.minMove >= pageX) || (this.parent.enableRtl && this.minMove <= pageX)))\n || (this.column.getFreezeTableName() === literals.frozenRight && ((this.parent.enableRtl && this.minMove >= pageX)\n || (!this.parent.enableRtl && this.minMove <= pageX)))) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n if (width !== parseFloat(isNullOrUndefined(this.column.width) || this.column.width === 'auto' ?\n offsetWidth.toString() : this.column.width.toString())) {\n this.pageX = pageX;\n this.column.width = formatUnit(width);\n var args = {\n e: e,\n column: this.column\n };\n this.parent.trigger(events.onResize, args);\n if (args.cancel) {\n this.cancelResizeAction(true);\n return;\n }\n var columns = [this.column];\n var finalColumns = [this.column];\n if (this.column.columns) {\n columns = this.getSubColumns(this.column, []);\n columns = this.calulateColumnsWidth(columns, false, mousemove);\n finalColumns = this.calulateColumnsWidth(columns, true, mousemove);\n }\n this.resizeProcess = true;\n for (var _i = 0, finalColumns_1 = finalColumns; _i < finalColumns_1.length; _i++) {\n var col = finalColumns_1[_i];\n this.widthService.setColumnWidth(col, null, 'resize');\n }\n this.resizeProcess = false;\n this.updateHelper();\n }\n this.isDblClk = false;\n };\n Resize.prototype.calulateColumnsWidth = function (columns, isUpdate, mousemove) {\n var finalColumns = [];\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var totalWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n totalWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n var colData = this.getColData(col, (parseFloat(col.width)) * mousemove / totalWidth);\n var colWidth = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n if ((colWidth !== parseFloat(col.width.toString()))) {\n if (isUpdate) {\n col.width = formatUnit(colWidth < 1 ? 1 : colWidth);\n }\n finalColumns.push(col);\n }\n }\n return finalColumns;\n };\n Resize.prototype.getSubColumns = function (column, subColumns) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false && col.allowResizing) {\n if (col.columns) {\n this.getSubColumns(col, subColumns);\n }\n else {\n subColumns.push(col);\n }\n }\n }\n return subColumns;\n };\n Resize.prototype.resizeEnd = function (e) {\n if (!this.helper || this.parent.isDestroyed) {\n return;\n }\n var gObj = this.parent;\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n detach(this.helper);\n var args = { e: e, column: this.column };\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var cTable = content.querySelector('.' + literals.movableContent) ? content.querySelector('.' + literals.movableContent) : content;\n if (cTable.scrollHeight > cTable.clientHeight) {\n this.parent.scrollModule.setPadding();\n cTable.style.overflowY = 'scroll';\n }\n this.parent.trigger(events.resizeStop, args);\n closest(this.element, '.e-headercell').classList.add('e-resized');\n if (parentsUntil(this.element, 'e-frozenheader')) {\n this.isFrozenColResized = true;\n }\n else {\n this.isFrozenColResized = false;\n }\n if (this.parent.isFrozenGrid()) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.parent.notify(events.textWrapRefresh, { case: 'textwrap' });\n }\n var headerTable;\n var contentTable;\n var footerTable;\n var rightCnt = gObj.getFrozenRightColumnsCount();\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (gObj.isFrozenGrid()) {\n if (rightCnt > 0) {\n headerTable = gObj.getHeaderContent().querySelector('.e-frozen-right-header').children[0];\n contentTable = gObj.getContent().querySelector('.e-frozen-right-content').children[0];\n }\n else {\n headerTable = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).children[0];\n contentTable = gObj.getContent().querySelector('.' + literals.movableContent).children[0];\n }\n }\n else {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n this.refresh();\n this.doubleTapEvent(e);\n this.isDblClk = true;\n };\n Resize.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 Resize.prototype.refreshColumnWidth = function () {\n var columns = this.parent.getColumns();\n for (var _i = 0, _a = [].slice.apply(this.parent.getHeaderContent().querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, columns_2 = columns; _b < columns_2.length; _b++) {\n var column = columns_2[_b];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === column.uid && column.visible) {\n column.width = ele.getBoundingClientRect().width;\n break;\n }\n }\n }\n return columns;\n };\n Resize.prototype.refreshStackedColumnWidth = function () {\n for (var _i = 0, _a = this.parent.getStackedColumns(this.parent.columns); _i < _a.length; _i++) {\n var stackedColumn = _a[_i];\n stackedColumn.width = this.getStackedWidth(stackedColumn, 0);\n }\n };\n Resize.prototype.getStackedWidth = function (column, width) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false) {\n if (col.columns) {\n this.getStackedWidth(col, width);\n }\n else {\n width += col.width;\n }\n }\n }\n return width;\n };\n Resize.prototype.getTargetColumn = function (e) {\n var cell = closest(e.target, resizeClassList.header);\n cell = cell.querySelector('.e-headercelldiv') || cell.querySelector('.e-stackedheadercelldiv');\n var uid = cell.getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.updateCursor = function (action) {\n var headerRows = [].slice.call(this.parent.getHeaderContent().querySelectorAll('th'));\n headerRows.push(this.parent.element);\n for (var _i = 0, headerRows_1 = headerRows; _i < headerRows_1.length; _i++) {\n var row = headerRows_1[_i];\n row.classList[\"\" + action](resizeClassList.cursor);\n }\n };\n Resize.prototype.refresh = function () {\n this.column = null;\n this.pageX = null;\n this.element = null;\n this.helper = null;\n };\n Resize.prototype.appendHelper = function () {\n this.helper = this.parent.createElement('div', {\n className: resizeClassList.helper\n });\n this.parent.element.appendChild(this.helper);\n this.setHelperHeight();\n };\n Resize.prototype.setHelperHeight = function () {\n var isFrozen = this.parent.isFrozenGrid();\n var height = isFrozen ? this.parent.getContent().querySelector('.' + literals.content).offsetHeight\n : this.parent.getContent().offsetHeight - this.getScrollBarWidth();\n var rect = closest(this.element, resizeClassList.header);\n var tr = [].slice.call(this.parent.getHeaderContent().querySelectorAll('tr'));\n var right = this.parent.getFrozenRightColumnsCount();\n if (isFrozen) {\n if (parentsUntil(rect, literals.movableHeader)) {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelectorAll('tr'));\n }\n else if (right && parentsUntil(rect, 'e-frozen-right-header')) {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelectorAll('tr'));\n }\n else {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-left-header').querySelectorAll('tr'));\n }\n }\n for (var i = tr.indexOf(rect.parentElement); i < tr.length && i > -1; i++) {\n height += tr[parseInt(i.toString(), 10)].offsetHeight;\n }\n var pos = this.calcPos(rect);\n if (parentsUntil(rect, 'e-frozen-right-header')) {\n pos.left += (this.parent.enableRtl ? rect.offsetWidth - 2 : 0 - 1);\n }\n else {\n pos.left += (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2);\n }\n this.helper.style.cssText = 'height: ' + height + 'px; top: ' + pos.top + 'px; left:' + Math.floor(pos.left) + 'px;';\n if (this.parent.enableVirtualization) {\n this.helper.classList.add('e-virtual-rhandler');\n }\n };\n Resize.prototype.getScrollBarWidth = function (height) {\n var ele = this.parent.getContent().firstChild;\n return (ele.scrollHeight > ele.clientHeight && height) ||\n ele.scrollWidth > ele.clientWidth ? getScrollBarWidth() : 0;\n };\n Resize.prototype.removeHelper = function (e) {\n var cls = e.target.classList;\n if (!(cls.contains(resizeClassList.root) || cls.contains(resizeClassList.icon)) && this.helper) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n detach(this.helper);\n this.refresh();\n }\n };\n Resize.prototype.updateHelper = function () {\n var rect = closest(this.element, resizeClassList.header);\n var left;\n if (parentsUntil(rect, 'e-frozen-right-header')) {\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? rect.offsetWidth - 2 : 0 - 1));\n }\n else {\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2));\n }\n var borderWidth = 2; // to maintain the helper inside of grid element.\n if (left > this.parentElementWidth) {\n left = this.parentElementWidth - borderWidth;\n }\n if (this.parent.isFrozenGrid()) {\n var table = closest(rect, '.' + literals.table);\n var fLeft = table.offsetLeft;\n if (left < fLeft) {\n left = fLeft;\n }\n }\n this.helper.style.left = left + 'px';\n };\n Resize.prototype.calcPos = function (elem) {\n var parentOffset = {\n top: 0,\n left: 0\n };\n var offset = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var offsetParent = parentsUntil(elem, 'e-grid') || 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 return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n };\n Resize.prototype.doubleTapEvent = function (e) {\n var _this = this;\n if (this.getUserAgent() && this.isDblClk) {\n if (!this.tapped) {\n this.tapped = setTimeout(function () {\n _this.tapped = null;\n }, 300);\n }\n else {\n clearTimeout(this.tapped);\n this.callAutoFit(e);\n this.tapped = null;\n }\n }\n };\n Resize.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n Resize.prototype.timeoutHandler = function () {\n this.tapped = null;\n };\n return Resize;\n}());\nexport { Resize };\n","import { Draggable, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest as closestElement, classList, extend } from '@syncfusion/ej2-base';\nimport { parentsUntil, removeElement, getPosition, addRemoveActiveClasses, isActionPrevent } from '../base/util';\nimport { setRowsInTbody, resetRowIndex } from '../base/util';\nimport * as events from '../base/constant';\nimport { Scroll } from '../actions/scroll';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * Reorder module is used to handle row reordering.\n *\n * @hidden\n */\nvar RowDD = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function RowDD(parent) {\n var _this = this;\n this.selectedRows = [];\n this.isOverflowBorder = true;\n this.selectedRowColls = [];\n this.isRefresh = true;\n this.isReplaceDragEle = true;\n this.istargetGrid = false;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var visualElement = _this.parent.createElement('div', {\n className: 'e-cloneproperties e-draganddrop e-grid e-dragclone',\n styles: 'height:\"auto\", z-index:2, width:' + gObj.element.offsetWidth\n });\n var table = _this.parent.createElement('table', { styles: 'width:' + gObj.element.offsetWidth, attrs: { role: 'grid' } });\n var tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n if (document.getElementsByClassName('e-griddragarea').length ||\n (gObj.rowDropSettings.targetID && ((!target.classList.contains('e-selectionbackground')\n && gObj.selectionSettings.type !== 'Single') || !parentsUntil(target, 'e-rowcell'))) ||\n (!gObj.rowDropSettings.targetID && !parentsUntil(target, 'e-rowdragdrop'))) {\n return false;\n }\n if (gObj.rowDropSettings.targetID &&\n gObj.selectionSettings.mode === 'Row' && gObj.selectionSettings.type === 'Single') {\n gObj.selectRow(parseInt(_this.draggable.currentStateTarget.parentElement.getAttribute(literals.dataRowIndex), 10));\n }\n _this.startedRow = closestElement(target, 'tr').cloneNode(true);\n var frzCols = _this.parent.isFrozenGrid();\n if (frzCols) {\n var rowIndex = parseInt(closestElement(target, 'tr').getAttribute(literals.dataRowIndex), 10);\n _this.startedRow.innerHTML = '';\n _this.startedRow.innerHTML += gObj.getRowByIndex(rowIndex).innerHTML;\n _this.startedRow.innerHTML += gObj.getMovableRowByIndex(rowIndex).innerHTML;\n if (gObj.getFrozenMode() === literals.leftRight) {\n _this.startedRow.innerHTML += gObj.getFrozenRightRowByIndex(rowIndex).innerHTML;\n }\n }\n _this.processArgs(target);\n var args = {\n selectedRow: _this.rows, dragelement: target,\n cloneElement: visualElement, cancel: false, data: _this.rowData\n };\n var selectedRows = gObj.getSelectedRows();\n gObj.trigger(events.rowDragStartHelper, args);\n var cancel = 'cancel';\n if (args[\"\" + cancel]) {\n return false;\n }\n removeElement(_this.startedRow, '.e-indentcell');\n removeElement(_this.startedRow, '.e-detailrowcollapse');\n removeElement(_this.startedRow, '.e-detailrowexpand');\n _this.removeCell(_this.startedRow, literals.gridChkBox);\n var exp = new RegExp('e-active', 'g'); //high contrast issue\n _this.startedRow.innerHTML = _this.startedRow.innerHTML.replace(exp, '');\n tbody.appendChild(_this.startedRow);\n if (gObj.getSelectedRowIndexes().length > 1 && _this.startedRow.hasAttribute('aria-selected')) {\n var index = gObj.getFrozenMode() === literals.leftRight ? 3 : 2;\n var dropCountEle = _this.parent.createElement('span', {\n className: 'e-dropitemscount', innerHTML: frzCols ? '' + selectedRows.length / index : '' + selectedRows.length\n });\n visualElement.appendChild(dropCountEle);\n }\n var ele = closestElement(target, 'tr').querySelector('.e-icon-rowdragicon');\n if (ele) {\n ele.classList.add('e-dragstartrow');\n }\n table.appendChild(tbody);\n visualElement.appendChild(table);\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n if (gObj.element.classList.contains('e-childgrid')) {\n var parentGrid = _this.getParentGrid(gObj.element);\n parentGrid.appendChild(e.dragElement);\n gObj.element.appendChild(gObj.createElement('div', { className: 'e-drag-ref' }));\n }\n document.body.classList.add('e-prevent-select');\n if (document.getElementsByClassName('e-griddragarea').length) {\n return;\n }\n var target = e.target;\n var spanCssEle = _this.parent.element.querySelector('.e-dropitemscount');\n if (_this.parent.getSelectedRecords().length > 1 && spanCssEle) {\n spanCssEle.style.left = _this.parent.element.querySelector('.e-cloneproperties table')\n .offsetWidth - 5 + 'px';\n }\n _this.processArgs(target);\n gObj.trigger(events.rowDragStart, {\n rows: _this.rows, target: e.target,\n draggableType: 'rows', fromIndex: parseInt(_this.rows[0].getAttribute(literals.dataRowIndex), 10),\n data: (Object.keys(_this.rowData[0]).length > 0) ? _this.rowData : _this.currentViewData()\n });\n _this.dragStartData = _this.rowData;\n var dropElem = document.getElementById(gObj.rowDropSettings.targetID);\n if (gObj.rowDropSettings.targetID && dropElem && dropElem.ej2_instances &&\n dropElem.ej2_instances[0].getModuleName() === 'grid') {\n dropElem.ej2_instances[0].getContent().classList.add('e-allowRowDrop');\n }\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n _this.isDropGrid = _this.parent;\n _this.istargetGrid = false;\n if (_this.parent.rowDropSettings.targetID) {\n var dropElement = document.getElementById(gObj.rowDropSettings.targetID);\n _this.isDropGrid = dropElement.ej2_instances[0];\n if (parentsUntil(e.target, 'e-grid')) {\n _this.istargetGrid = _this.parent.rowDropSettings.targetID === parentsUntil(e.target, 'e-grid').id;\n }\n }\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (gObj.element.classList.contains('e-childgrid')) {\n var parentGrid = _this.getParentGrid(gObj.element);\n cloneElement = parentGrid.querySelector('.e-cloneproperties');\n }\n var target = _this.getElementFromPosition(cloneElement, e.event);\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur', 'e-movecur', 'e-grabcur']);\n _this.isOverflowBorder = true;\n _this.hoverState = gObj.enableHover;\n var trElement = parentsUntil(target, 'e-grid') ? closestElement(e.target, 'tr') : null;\n if (!e.target) {\n return;\n }\n _this.processArgs(target);\n var args = {\n rows: _this.rows, target: target, draggableType: 'rows',\n data: _this.rowData, originalEvent: e, cancel: false\n };\n gObj.trigger(events.rowDrag, args);\n _this.stopTimer();\n if (args.cancel) {\n return;\n }\n gObj.element.classList.add('e-rowdrag');\n _this.dragTarget = trElement && (parentsUntil(target, 'e-grid').id === cloneElement.parentElement.id ||\n parentsUntil(target, 'e-grid').id) ? _this.isDropGrid.element.querySelector('.e-emptyrow') ? 0 :\n parseInt(trElement.getAttribute('data-rowindex'), 10) : parseInt(_this.startedRow.getAttribute('data-rowindex'), 10);\n if (gObj.rowDropSettings.targetID) {\n var dragParentElement = document.querySelector('.e-drag-ref');\n if (!parentsUntil(target, 'e-grid') ||\n parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(target, 'e-grid').id || (dragParentElement\n && parentsUntil(dragParentElement.parentElement, 'e-grid').id === parentsUntil(target, 'e-grid').id)) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n else {\n classList(cloneElement, ['e-grabcur'], ['e-notallowedcur']);\n }\n }\n else {\n var elem = parentsUntil(target, 'e-grid');\n if (elem && elem.id === cloneElement.parentElement.id) {\n classList(cloneElement, ['e-movecur'], ['e-defaultcur']);\n }\n else {\n classList(cloneElement, ['e-notallowedcur'], ['e-movecur']);\n }\n }\n if (parentsUntil(_this.isDropGrid.element, 'e-grid')) {\n if ((!_this.isDropGrid.groupSettings.columns.length || e.target.classList.contains('e-selectionbackground')) &&\n !_this.isDropGrid.element.querySelector('.e-emptyrow')) {\n if (parentsUntil(target, 'e-grid') && parentsUntil(target, 'e-grid').id === _this.isDropGrid.element.id) {\n _this.updateScrollPostion(e.event);\n }\n if (((_this.isOverflowBorder || _this.parent.frozenRows > _this.dragTarget) &&\n (parseInt(_this.startedRow.getAttribute(literals.dataRowIndex), 10) !== _this.dragTarget || _this.istargetGrid))\n || (_this.istargetGrid && trElement && _this.isDropGrid.getRowByIndex(_this.isDropGrid.getCurrentViewRecords().length - 1).\n getAttribute('data-uid') === trElement.getAttribute('data-uid'))) {\n _this.moveDragRows(e, _this.startedRow, trElement);\n }\n else {\n var islastRowIndex = void 0;\n if (_this.parent.enableVirtualization) {\n islastRowIndex = trElement && parseInt(trElement.getAttribute(literals.dataRowIndex), 10) ===\n _this.parent.renderModule.data.dataManager.dataSource.json.length - 1;\n }\n else {\n var lastRowUid = _this.parent.getRowByIndex(_this.parent.getCurrentViewRecords().length - 1).\n getAttribute('data-uid');\n islastRowIndex = trElement && lastRowUid === trElement.getAttribute('data-uid') && lastRowUid !==\n _this.startedRow.getAttribute('data-uid');\n }\n if (islastRowIndex && !_this.parent.rowDropSettings.targetID) {\n var bottomborder = _this.parent.createElement('div', { className: 'e-lastrow-dragborder' });\n var gridcontentEle = _this.parent.getContent();\n bottomborder.style.width = _this.parent.element.offsetWidth - _this.getScrollWidth() + 'px';\n if (_this.parent.enableVirtualization) {\n bottomborder.style.zIndex = '1';\n }\n if (!gridcontentEle.getElementsByClassName('e-lastrow-dragborder').length) {\n gridcontentEle.classList.add('e-grid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = _this.getScrollWidth() + 'px';\n }\n }\n _this.removeBorder(trElement);\n }\n }\n if (target && target.classList.contains(literals.content)\n && !_this.isDropGrid.element.querySelector('.e-emptyrow') && _this.istargetGrid) {\n _this.removeBorder(trElement);\n var rowIndex = _this.isDropGrid.getCurrentViewRecords().length - 1;\n var selector = '.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse';\n var rowElement = [];\n rowElement = [].slice.call(_this.isDropGrid.getRowByIndex(rowIndex).querySelectorAll(selector));\n if (_this.isDropGrid.isFrozenGrid()) {\n rowElement = _this.borderRowElement(rowIndex, selector);\n }\n if (rowElement.length > 0) {\n addRemoveActiveClasses(rowElement, true, 'e-dragborder');\n }\n }\n }\n };\n this.dragStop = function (e) {\n document.body.classList.remove('e-prevent-select');\n if (isActionPrevent(_this.parent)) {\n _this.parent.notify(events.preventBatch, {\n instance: _this, handler: _this.processDragStop, arg1: e\n });\n }\n else {\n _this.processDragStop(e);\n }\n };\n this.processDragStop = function (e) {\n var gObj = _this.parent;\n if (_this.parent.isDestroyed) {\n return;\n }\n var targetEle = _this.getElementFromPosition(e.helper, e.event);\n var target = targetEle && !targetEle.classList.contains('e-dlg-overlay') ?\n targetEle : e.target;\n gObj.element.classList.remove('e-rowdrag');\n var dropElement = document.getElementById(gObj.rowDropSettings.targetID);\n if (gObj.rowDropSettings.targetID && dropElement && dropElement.ej2_instances &&\n dropElement.ej2_instances[0].getModuleName() === 'grid') {\n dropElement.ej2_instances[0].getContent().classList.remove('e-allowRowDrop');\n }\n if (parentsUntil(_this.isDropGrid.element, 'e-grid')) {\n _this.stopTimer();\n _this.isDropGrid.enableHover = _this.hoverState;\n _this.isDropGrid.getContent().classList.remove('e-grid-relative');\n _this.removeBorder(targetEle);\n var stRow = _this.isDropGrid.element.querySelector('.e-dragstartrow');\n if (stRow) {\n stRow.classList.remove('e-dragstartrow');\n }\n }\n _this.processArgs(target);\n var args = {\n target: target, draggableType: 'rows',\n cancel: false,\n fromIndex: parseInt(_this.rows[0].getAttribute(literals.dataRowIndex), 10),\n dropIndex: _this.dragTarget, rows: _this.rows,\n data: (Object.keys(_this.dragStartData[0]).length > 0) ? _this.dragStartData : _this.currentViewData()\n };\n gObj.trigger(events.rowDrop, args, function () {\n if (!(parentsUntil(target, literals.row) || parentsUntil(target, 'e-emptyrow')\n || parentsUntil(target, literals.gridContent)) || args.cancel) {\n _this.dragTarget = null;\n remove(e.helper);\n return;\n }\n _this.isRefresh = false;\n var selectedIndexes = _this.parent.getSelectedRowIndexes();\n if (gObj.isRowDragable()) {\n if (!_this.parent.rowDropSettings.targetID &&\n _this.startedRow.querySelector('td.e-selectionbackground') && selectedIndexes.length > 1 &&\n selectedIndexes.length !== _this.parent.getCurrentViewRecords().length) {\n _this.reorderRows(selectedIndexes, args.dropIndex);\n }\n else {\n _this.reorderRows([parseInt(_this.startedRow.getAttribute(literals.dataRowIndex), 10)], _this.dragTarget);\n }\n _this.dragTarget = null;\n if (!gObj.rowDropSettings.targetID) {\n if (e.helper.classList.contains('e-cloneproperties') && document.querySelector('.' + e.helper.classList[0])) {\n remove(e.helper);\n }\n if (gObj.enableVirtualization) {\n gObj.refresh();\n }\n else {\n _this.rowOrder(args);\n }\n }\n }\n _this.isRefresh = true;\n });\n };\n this.removeCell = function (targetRow, className) {\n return [].slice.call(targetRow.querySelectorAll('td')).filter(function (cell) {\n if (cell.classList.contains(className)) {\n targetRow.deleteCell(cell.cellIndex);\n }\n });\n };\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialEnd, this.initializeDrag, this);\n this.parent.on(events.columnDrop, this.columnDrop, this);\n this.parent.on(events.rowDragAndDropComplete, this.onActionComplete, this);\n this.onDataBoundFn = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFn);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n RowDD.prototype.getParentGrid = function (childGrid) {\n var parentGrid = childGrid;\n var parentGridObtained = false;\n while (!parentGridObtained) {\n if (parentGrid.ej2_instances[0].parentDetails) {\n parentGrid = document.getElementById(parentGrid.ej2_instances[0].parentDetails.parentID);\n }\n if (!parentGrid.classList.contains('e-childgrid')) {\n parentGridObtained = true;\n }\n }\n return parentGrid;\n };\n RowDD.prototype.refreshRow = function (args, tbody, mtbody, frTbody, target, mTarget, frTarget) {\n var gObj = this.parent;\n var frzCols = gObj.isFrozenGrid();\n var isLeftRight = gObj.getFrozenMode() === literals.leftRight;\n var tbodyMovableHeader;\n var tbodyMovableContent;\n var frHdr;\n var frCnt;\n var tbodyContent = gObj.getContentTable().querySelector(literals.tbody);\n var tbodyHeader = gObj.getHeaderTable().querySelector(literals.tbody);\n if (frzCols) {\n tbodyMovableHeader = gObj.getMovableHeaderTbody();\n tbodyMovableContent = gObj.getMovableContentTbody();\n if (isLeftRight) {\n frHdr = gObj.getFrozenRightHeaderTbody();\n frCnt = gObj.getFrozenRightContentTbody();\n }\n }\n var index = gObj.getFrozenMode() === literals.leftRight ? 3 : 2;\n for (var i = 0, len = args.rows.length; i < len; i++) {\n if (frzCols) {\n if (i % index === 0) {\n tbody.insertBefore(args.rows[parseInt(i.toString(), 10)], target);\n }\n else if (i % index === 1) {\n mtbody.insertBefore(args.rows[parseInt(i.toString(), 10)], mTarget);\n }\n else {\n frTbody.insertBefore(args.rows[parseInt(i.toString(), 10)], frTarget);\n }\n }\n else {\n tbody.insertBefore(args.rows[parseInt(i.toString(), 10)], target);\n }\n }\n var tr = [].slice.call(tbody.getElementsByClassName(literals.row));\n var mtr;\n var frTr;\n if (frzCols) {\n mtr = [].slice.call(mtbody.getElementsByClassName(literals.row));\n if (isLeftRight) {\n frTr = [].slice.call(frTbody.getElementsByClassName(literals.row));\n }\n }\n this.refreshData(tr, mtr, frTr);\n if (this.parent.frozenRows) {\n var _loop_1 = function (i, len) {\n if (i < this_1.parent.frozenRows) {\n setRowsInTbody(tbodyHeader, tbodyMovableHeader, frHdr, tr, mtr, frTr, function (tbody, rows) {\n tbody.appendChild(rows[parseInt(i.toString(), 10)]);\n });\n }\n else {\n setRowsInTbody(tbodyContent, tbodyMovableContent, frCnt, tr, mtr, frTr, function (tbody, rows) {\n tbody.appendChild(rows[parseInt(i.toString(), 10)]);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = tr.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n };\n RowDD.prototype.updateFrozenRowreOrder = function (args) {\n var gObj = this.parent;\n var tbodyMovH;\n var tbodyMovC;\n var tbodyFrH;\n var tbodyFrC;\n var frzCols = this.parent.isFrozenGrid();\n var isLeftRight = gObj.getFrozenMode() === literals.leftRight;\n var tbodyC = gObj.getContentTable().querySelector(literals.tbody);\n var tbodyH = gObj.getHeaderTable().querySelector(literals.tbody);\n if (frzCols) {\n tbodyMovH = gObj.getMovableHeaderTbody();\n tbodyMovC = gObj.getMovableContentTbody();\n if (isLeftRight) {\n tbodyFrH = gObj.getFrozenRightHeaderTbody();\n tbodyFrC = gObj.getFrozenRightContentTbody();\n }\n }\n var tr = [].slice.call(tbodyH.getElementsByClassName(literals.row)).concat([].slice.call(tbodyC.getElementsByClassName(literals.row)));\n var mtr;\n var frTr;\n if (frzCols) {\n mtr = [].slice.call(tbodyMovH.getElementsByClassName(literals.row))\n .concat([].slice.call(tbodyMovC.getElementsByClassName(literals.row)));\n if (isLeftRight) {\n frTr = [].slice.call(tbodyFrH.getElementsByClassName(literals.row))\n .concat([].slice.call(tbodyFrC.getElementsByClassName(literals.row)));\n }\n }\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var mtbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var frTbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n this.parent.clearSelection();\n var targetRows = this.refreshRowTarget(args);\n for (var i = 0, len = tr.length; i < len; i++) {\n tbody.appendChild(tr[parseInt(i.toString(), 10)]);\n if (frzCols) {\n mtbody.appendChild(mtr[parseInt(i.toString(), 10)]);\n if (isLeftRight) {\n frTbody.appendChild(frTr[parseInt(i.toString(), 10)]);\n }\n }\n }\n this.refreshRow(args, tbody, mtbody, frTbody, targetRows.target, targetRows.mTarget, targetRows.frTarget);\n };\n RowDD.prototype.refreshRowTarget = function (args) {\n var gObj = this.parent;\n var mTr;\n var frTr;\n var targetIdx = parseInt(args.target.parentElement.getAttribute(literals.dataRowIndex), 10);\n if (args.fromIndex < args.dropIndex || args.fromIndex === args.dropIndex) {\n targetIdx = targetIdx + 1;\n }\n var tr = gObj.getRowByIndex(targetIdx);\n if (gObj.isFrozenGrid()) {\n mTr = gObj.getMovableRowByIndex(targetIdx);\n if (gObj.getFrozenMode() === literals.leftRight) {\n frTr = gObj.getFrozenRightRowByIndex(targetIdx);\n }\n }\n var rows = {\n target: tr, mTarget: mTr, frTarget: frTr\n };\n return rows;\n };\n RowDD.prototype.updateFrozenColumnreOrder = function (args) {\n var gObj = this.parent;\n var mtbody;\n var frTbody;\n var frzCols = this.parent.isFrozenGrid();\n var tbody = gObj.getContentTable().querySelector(literals.tbody);\n if (frzCols) {\n mtbody = gObj.getMovableContentTbody();\n if (gObj.getFrozenMode() === literals.leftRight) {\n frTbody = gObj.getFrozenRightContentTbody();\n }\n }\n this.parent.clearSelection();\n var targetRows = this.refreshRowTarget(args);\n this.refreshRow(args, tbody, mtbody, frTbody, targetRows.target, targetRows.mTarget, targetRows.frTarget);\n };\n RowDD.prototype.refreshData = function (tr, mtr, frTr) {\n var rowObj = {};\n var movobj = {};\n var frObj = {};\n var recordobj = {};\n var rowObjects = this.parent.getRowsObject();\n var movbObject = this.parent.getMovableRowsObject();\n var frRightObject = this.parent.getFrozenRightRowsObject();\n var currentViewData = this.parent.getCurrentViewRecords();\n for (var i = 0, len = tr.length; i < len; i++) {\n var index = parseInt(tr[parseInt(i.toString(), 10)].getAttribute(literals.dataRowIndex), 10);\n rowObj[parseInt(i.toString(), 10)] = rowObjects[parseInt(index.toString(), 10)];\n recordobj[parseInt(i.toString(), 10)] = currentViewData[parseInt(index.toString(), 10)];\n if (this.parent.isFrozenGrid()) {\n movobj[parseInt(i.toString(), 10)] = movbObject[parseInt(index.toString(), 10)];\n if (frTr) {\n frObj[parseInt(i.toString(), 10)] = frRightObject[parseInt(index.toString(), 10)];\n }\n }\n }\n var rows = this.parent.getRows();\n var movbRows;\n var frRightRows;\n if (this.parent.isFrozenGrid()) {\n movbRows = this.parent.getMovableRows();\n if (frTr) {\n frRightRows = this.parent.getFrozenRightRows();\n }\n }\n for (var i = 0, len = tr.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = tr[parseInt(i.toString(), 10)];\n rowObjects[parseInt(i.toString(), 10)] = rowObj[parseInt(i.toString(), 10)];\n currentViewData[parseInt(i.toString(), 10)] = recordobj[parseInt(i.toString(), 10)];\n if (this.parent.isFrozenGrid()) {\n movbRows[parseInt(i.toString(), 10)] = mtr[parseInt(i.toString(), 10)];\n movbObject[parseInt(i.toString(), 10)] = movobj[parseInt(i.toString(), 10)];\n if (frTr) {\n frRightRows[parseInt(i.toString(), 10)] = frTr[parseInt(i.toString(), 10)];\n frRightObject[parseInt(i.toString(), 10)] = frObj[parseInt(i.toString(), 10)];\n }\n }\n }\n resetRowIndex(this.parent, rowObjects, tr);\n if (this.parent.isFrozenGrid()) {\n resetRowIndex(this.parent, movbObject, mtr);\n if (frTr) {\n resetRowIndex(this.parent, frRightObject, frTr);\n }\n }\n };\n RowDD.prototype.rowOrder = function (args) {\n if (args.dropIndex === args.fromIndex || isNaN(args.dropIndex)) {\n return;\n }\n if (this.parent.isDetail()) {\n this.parent.detailCollapseAll();\n var rows = [].slice.call(this.parent.getContentTable().querySelector(literals.tbody).children);\n var rowObjects = this.parent.getRowsObject();\n rows.filter(function (row) {\n if (row.classList.contains('e-detailrow')) {\n row.remove();\n }\n });\n for (var i = 0, len = rowObjects.length; i < len; i++) {\n if (!rowObjects[parseInt(i.toString(), 10)]) {\n break;\n }\n if (rowObjects[parseInt(i.toString(), 10)].isDetailRow) {\n this.parent.getRowsObject().splice(i, 1);\n i--;\n }\n }\n }\n if (args.target.classList.contains('e-rowcelldrag') || args.target.classList.contains('e-dtdiagonalright')\n || args.target.classList.contains('e-dtdiagonaldown')) {\n args.target = args.target.parentElement;\n }\n if (!args.target.classList.contains('e-rowcell') && parentsUntil(args.target, 'e-rowcell')) {\n args.target = parentsUntil(args.target, 'e-rowcell');\n }\n if (this.parent.frozenRows) {\n this.updateFrozenRowreOrder(args);\n }\n else {\n this.updateFrozenColumnreOrder(args);\n }\n if (this.selectedRowColls.length > 0) {\n this.parent.selectRows(this.selectedRowColls);\n var indexes = [];\n if (this.parent.filterSettings.columns.length || this.parent.sortSettings.columns.length) {\n for (var i = 0, len = args.rows.length; i < len; i++) {\n indexes.push(parseInt(args.rows[parseInt(i.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n }\n this.selectedRowColls = indexes;\n }\n this.selectedRowColls = [];\n }\n };\n RowDD.prototype.currentViewData = function () {\n var selectedIndexes = this.parent.getSelectedRowIndexes();\n var currentVdata = [];\n var fromIdx = parseInt(this.startedRow.getAttribute(literals.dataRowIndex), 10);\n for (var i = 0, n = selectedIndexes.length; i < n; i++) {\n var currentV = 'currentViewData';\n currentVdata[parseInt(i.toString(), 10)] = this.parent[\"\" + currentV][selectedIndexes[parseInt(i.toString(), 10)]];\n }\n if (!this.parent.rowDropSettings.targetID && selectedIndexes.length === 0) {\n currentVdata[0] = this.parent.currentViewData[parseInt(fromIdx.toString(), 10)];\n }\n return currentVdata;\n };\n RowDD.prototype.saveChange = function (changeRecords, query) {\n var _this = this;\n this.parent.getDataModule().saveChanges(changeRecords, this.parent.getPrimaryKeyFieldNames()[0], {}, query)\n .then(function () {\n _this.parent.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'rowdraganddrop'\n });\n }).catch(function (e) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[\"\" + error]) && !isNullOrUndefined(e[\"\" + error][\"\" + message])) {\n e[\"\" + error] = e[\"\" + error][\"\" + message];\n }\n _this.parent.trigger(events.actionFailure, e);\n });\n };\n RowDD.prototype.reorderRows = function (fromIndexes, toIndex) {\n var selectedIndexes = this.parent.getSelectedRowIndexes();\n var selectedRecords = [];\n var draggedRecords = [];\n var currentViewData = this.parent.renderModule.data.dataManager.dataSource.json;\n var skip = this.parent.allowPaging ?\n (this.parent.pageSettings.currentPage * this.parent.pageSettings.pageSize) - this.parent.pageSettings.pageSize : 0;\n var dropIdx = toIndex + skip;\n var actualIdx = fromIndexes[0] + skip;\n for (var i = 0, len = fromIndexes.length; i < len; i++) {\n draggedRecords[parseInt(i.toString(), 10)] = currentViewData[fromIndexes[parseInt(i.toString(), 10)] + skip];\n }\n for (var i = 0, len = selectedIndexes.length; i < len; i++) {\n selectedRecords[parseInt(i.toString(), 10)] = currentViewData[selectedIndexes[parseInt(i.toString(), 10)] + skip];\n }\n for (var i = 0, len = draggedRecords.length; i < len; i++) {\n if (i !== 0) {\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[parseInt(j.toString(), 10)]) ===\n JSON.stringify(draggedRecords[parseInt(i.toString(), 10)])) {\n actualIdx = j;\n break;\n }\n }\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[parseInt(j.toString(), 10)]) === JSON\n .stringify(draggedRecords[i - 1])) {\n if (actualIdx > j) {\n dropIdx = j + 1;\n }\n break;\n }\n }\n }\n this.reorderRow(actualIdx - skip, dropIdx - skip);\n }\n if (this.isRefresh) {\n this.parent.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'rowdraganddrop'\n });\n }\n for (var i = 0, len = selectedRecords.length; i < len; i++) {\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[parseInt(j.toString(), 10)]) === JSON\n .stringify(selectedRecords[parseInt(i.toString(), 10)])) {\n selectedIndexes[parseInt(i.toString(), 10)] = j - skip;\n break;\n }\n }\n }\n this.selectedRowColls = selectedIndexes;\n };\n RowDD.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n RowDD.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, { type: events.actionComplete, requestType: 'rowdraganddrop' }));\n };\n RowDD.prototype.initializeDrag = function () {\n var gObj = this.parent;\n this.draggable = new Draggable(gObj.element, {\n dragTarget: '.e-rowcelldrag, .e-rowdragdrop, .e-rowcell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n isReplaceDragEle: this.isReplaceDragEle,\n isPreventSelect: false\n });\n };\n RowDD.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var y = getPosition(e).y;\n var cliRect = this.isDropGrid.getContent().getBoundingClientRect();\n var rowHeight = this.isDropGrid.getRowHeight() - 15;\n var scrollElem = this.isDropGrid.getContent().firstElementChild;\n var virtualScrollbtm = this.parent.enableVirtualization ? 20 : 0;\n if (cliRect.top >= y) {\n var scrollPixel_1 = -(this.isDropGrid.getRowHeight());\n this.isOverflowBorder = false;\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollElem, scrollPixel_1); }, 200);\n }\n else if (cliRect.top + this.isDropGrid.getContent().clientHeight - rowHeight - 33 - virtualScrollbtm <= y) {\n var scrollPixel_2 = (this.isDropGrid.getRowHeight());\n this.isOverflowBorder = false;\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollElem, scrollPixel_2); }, 200);\n }\n };\n RowDD.prototype.setScrollDown = function (scrollElem, scrollPixel) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n };\n RowDD.prototype.moveDragRows = function (e, startedRow, targetRow) {\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n if (this.parent.element.classList.contains('e-childgrid')) {\n var parentGrid = this.getParentGrid(this.parent.element);\n cloneElement = parentGrid.querySelector('.e-cloneproperties');\n }\n var element = closestElement(e.target, 'tr');\n if (parentsUntil(element, 'e-grid') &&\n (parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(element, 'e-grid').id || this.istargetGrid)) {\n var targetElement = element ?\n element : this.startedRow;\n this.setBorder(targetElement, e.event, startedRow, targetRow);\n }\n };\n RowDD.prototype.setBorder = function (element, event, startedRow, targetRow) {\n var node = this.parent.element;\n if (this.istargetGrid) {\n node = this.isDropGrid.element;\n }\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n this.removeFirstRowBorder(element);\n this.removeLastRowBorder(element);\n if (parentsUntil(element, 'e-grid') && element.classList.contains(literals.row) && ((!this.parent.rowDropSettings.targetID &&\n parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(element, 'e-grid').id) || this.istargetGrid)) {\n removeClass(node.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'), ['e-dragborder']);\n var rowElement = [];\n var targetRowIndex = parseInt(targetRow.getAttribute(literals.dataRowIndex), 10);\n if (targetRow && targetRowIndex === 0) {\n var div = this.parent.createElement('div', { className: 'e-firstrow-dragborder' });\n var gridheaderEle = this.isDropGrid.getHeaderContent();\n gridheaderEle.classList.add('e-grid-relative');\n div.style.width = node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.getElementsByClassName('e-firstrow-dragborder').length) {\n gridheaderEle.appendChild(div);\n }\n }\n else if (this.parent.rowDropSettings.targetID && targetRow) {\n element = this.isDropGrid.getRowByIndex(targetRowIndex - 1);\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n else if (targetRow && parseInt(startedRow.getAttribute(literals.dataRowIndex), 10) > targetRowIndex) {\n element = this.parent.getRowByIndex(targetRowIndex - 1);\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n else {\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n var frzCols = this.parent.isFrozenGrid();\n if (targetRow && targetRowIndex !== 0 && frzCols) {\n var rowIndex = parseInt(element.getAttribute(literals.dataRowIndex), 10);\n var selector = '.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse';\n rowElement = this.borderRowElement(rowIndex, selector);\n }\n if (rowElement.length > 0) {\n addRemoveActiveClasses(rowElement, true, 'e-dragborder');\n }\n }\n };\n RowDD.prototype.borderRowElement = function (rowIndex, selector) {\n var lastRow = [];\n lastRow = [].slice.call(this.isDropGrid.getRowByIndex(rowIndex).querySelectorAll(selector)).\n concat([].slice.call(this.isDropGrid.getMovableRowByIndex(rowIndex).querySelectorAll(selector)));\n if (this.isDropGrid.getFrozenMode() === literals.leftRight) {\n lastRow = lastRow.concat([].slice.call(this.isDropGrid.getFrozenRightRowByIndex(rowIndex).querySelectorAll(selector)));\n }\n return lastRow;\n };\n RowDD.prototype.getScrollWidth = function () {\n var scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n };\n RowDD.prototype.removeFirstRowBorder = function (element) {\n if (this.isDropGrid.element.getElementsByClassName('e-firstrow-dragborder').length > 0 && element &&\n element.rowIndex !== 0) {\n remove(this.isDropGrid.element.getElementsByClassName('e-firstrow-dragborder')[0]);\n }\n };\n RowDD.prototype.removeLastRowBorder = function (element) {\n var islastRowIndex;\n if (this.parent.enableVirtualization) {\n islastRowIndex = element && parseInt(element.getAttribute(literals.dataRowIndex), 10) !==\n this.parent.renderModule.data.dataManager.dataSource.json.length - 1;\n }\n else {\n islastRowIndex = element &&\n this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0 && element && islastRowIndex) {\n remove(this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0]);\n }\n };\n RowDD.prototype.removeBorder = function (element) {\n this.removeFirstRowBorder(element);\n if (!this.parent.rowDropSettings.targetID) {\n this.removeLastRowBorder(element);\n }\n element = (this.isDropGrid.isFrozenGrid() ? this.isDropGrid.getMovableRows() : this.isDropGrid.getRows()).filter(function (row) {\n return row.querySelector('td.e-dragborder');\n })[0];\n if (element) {\n var rowElement = [].slice.call(element.getElementsByClassName('e-dragborder'));\n if (this.parent.isFrozenGrid()) {\n var rowIndex = parseInt(element.getAttribute(literals.dataRowIndex), 10);\n var selector = '.e-dragborder';\n rowElement = this.borderRowElement(rowIndex, selector);\n }\n addRemoveActiveClasses(rowElement, false, 'e-dragborder');\n }\n };\n RowDD.prototype.getElementFromPosition = function (element, event) {\n var position = getPosition(event);\n element.style.display = 'none';\n var target = document.elementFromPoint(position.x, position.y);\n element.style.display = '';\n return target;\n };\n RowDD.prototype.onDataBound = function () {\n if (this.selectedRowColls.length > 0 && (this.parent.enableVirtualization || this.parent.allowRowDragAndDrop)) {\n this.parent.selectRows(this.selectedRowColls);\n this.selectedRowColls = [];\n }\n };\n RowDD.prototype.getTargetIdx = function (targetRow) {\n return targetRow ? parseInt(targetRow.getAttribute(literals.dataRowIndex), 10) : 0;\n };\n RowDD.prototype.singleRowDrop = function (e) {\n var targetRow = closestElement(e.target, 'tr');\n var srcControl = e.droppedElement.parentElement.ej2_instances[0];\n var currentIndex = targetRow ? targetRow.rowIndex : srcControl.currentViewData.length - 1;\n this.reorderRow(this.startedRowIndex, currentIndex);\n };\n RowDD.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') !== 'grouping' &&\n (parentsUntil(e.target, literals.row) || parentsUntil(e.target, 'e-emptyrow') || parentsUntil(e.target, literals.gridContent))) {\n var targetRow = closestElement(e.target, 'tr');\n var srcControl = void 0;\n var currentIndex = void 0;\n var dragParentElement = document.querySelector('.e-drag-ref');\n if ((e.droppedElement.querySelector('tr').getAttribute('single-dragrow') !== 'true' &&\n (e.droppedElement.parentElement.id === gObj.element.id || (dragParentElement\n && dragParentElement.parentElement.id === gObj.element.id)))\n || (e.droppedElement.querySelector('tr').getAttribute('single-dragrow') === 'true' &&\n e.droppedElement.parentElement.id !== gObj.element.id)) {\n return;\n }\n if (e.droppedElement.parentElement.id !== gObj.element.id) {\n if (dragParentElement) {\n srcControl = dragParentElement.parentElement.ej2_instances[0];\n remove(dragParentElement);\n }\n else {\n srcControl = e.droppedElement.parentElement.ej2_instances[0];\n }\n }\n else if (this.isSingleRowDragDrop || e.droppedElement.querySelector('tr').getAttribute('single-dragrow') === 'true') {\n this.singleRowDrop(e);\n return;\n }\n if (srcControl.element.id !== gObj.element.id && srcControl.rowDropSettings.targetID !== gObj.element.id) {\n return;\n }\n var records = srcControl.getSelectedRecords();\n var targetIndex = currentIndex = this.getTargetIdx(targetRow);\n if (isNaN(targetIndex)) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n targetIndex = currentIndex = 0;\n }\n if (gObj.allowPaging) {\n targetIndex = targetIndex + (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize;\n }\n //Todo: drag and drop mapper & BatchChanges\n gObj.notify(events.rowsAdded, { toIndex: targetIndex, records: records });\n gObj.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'rowdraganddrop'\n });\n var selectedRows = srcControl.getSelectedRowIndexes();\n var skip = srcControl.allowPaging ?\n (srcControl.pageSettings.currentPage * srcControl.pageSettings.pageSize) - srcControl.pageSettings.pageSize : 0;\n this.selectedRows = [];\n for (var i = 0, len = records.length; i < len; i++) {\n this.selectedRows.push(skip + selectedRows[parseInt(i.toString(), 10)]);\n }\n srcControl.notify(events.rowsRemoved, { indexes: this.selectedRows, records: records });\n srcControl.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'rowdraganddrop'\n });\n }\n };\n RowDD.prototype.reorderRow = function (fromIndexes, toIndex) {\n var gObj = this.parent;\n if (!gObj.sortSettings.columns.length && !gObj.groupSettings.columns.length && !gObj.filterSettings.columns.length) {\n //Todo: drag and drop mapper & BatchChanges\n var skip = gObj.allowPaging ?\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : 0;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var fromIndex = fromIndexes;\n toIndex = toIndex + skip;\n this.selectedRows = gObj.getSelectedRowIndexes();\n gObj.notify(events.rowPositionChanged, {\n fromIndex: fromIndexes + skip,\n toIndex: toIndex\n });\n }\n };\n RowDD.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.initializeDrag();\n }\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n RowDD.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + literals.gridHeader) &&\n !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.draggable.destroy();\n this.parent.off(events.initialEnd, this.initializeDrag);\n this.parent.off(events.columnDrop, this.columnDrop);\n this.parent.off(events.rowDragAndDropComplete, this.onActionComplete);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFn);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.destroy, this.destroy);\n //destory ejdrag and drop\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n RowDD.prototype.getModuleName = function () {\n return 'rowDragAndDrop';\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDD.prototype.processArgs = function (target) {\n var gObj = this.parent;\n var dragIdx = parseInt(this.startedRow.getAttribute(literals.dataRowIndex), 10);\n if ((gObj.getSelectedRecords().length > 0 && this.startedRow.cells[0].classList.contains('e-selectionbackground') === false)\n || gObj.getSelectedRecords().length === 0) {\n if (this.parent.enableVirtualization) {\n this.rows = [this.startedRow];\n }\n else {\n this.rows = [this.parent.getRowByIndex(dragIdx)];\n if (gObj.isFrozenGrid()) {\n this.rows = [gObj.getRowByIndex(dragIdx), gObj.getMovableRowByIndex(dragIdx)];\n if (gObj.getFrozenMode() === literals.leftRight) {\n this.rows = [\n gObj.getRowByIndex(dragIdx), gObj.getMovableRowByIndex(dragIdx), gObj.getFrozenRightRowByIndex(dragIdx)\n ];\n }\n }\n }\n this.rowData = [this.parent.getRowInfo((this.startedRow).querySelector('.' + literals.rowCell)).rowData];\n }\n else {\n this.rows = gObj.getSelectedRows();\n this.rowData = gObj.getSelectedRecords();\n }\n };\n return RowDD;\n}());\nexport { RowDD };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.isFrozenGrid() && this.parent.height !== 'auto' && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight ? '0.5px' : '1px';\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? padding : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n if (this.parent.isFrozenGrid()) {\n content.firstElementChild.style.height = 'calc(100% - ' + getScrollBarWidth() + 'px)';\n }\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n var frzCols = this.parent.isFrozenGrid();\n var mCont;\n var mHdr;\n if (this.content) {\n mCont = this.content.querySelector('.' + literals.movableContent);\n }\n if (this.header) {\n mHdr = this.header.querySelector('.' + literals.movableHeader);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.frozenRows && ((this.header && !frzCols) || (frzCols && mHdr))) {\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.parent.isFrozenGrid()) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (mCont) {\n EventHandler.remove(mCont, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mCont, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(mCont, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (mHdr) {\n EventHandler.remove(mHdr, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mHdr, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(mHdr, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onFrozenContentScroll);\n }\n }\n else {\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onContentScroll);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.onContentScroll);\n }\n }\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n if (this.parent.isFrozenGrid()) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n else {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n }\n };\n Scroll.prototype.onFrozenContentScroll = function () {\n var _this = this;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, e);\n }\n _this.previousValues.top = e.target.scrollTop;\n };\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (mCont, mHdr) {\n var _this = this;\n var content = mCont;\n var header = mHdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.' + literals.movableHeader) :\n _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.' + literals.movableContent) :\n _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = this.content.querySelector('.' + literals.movableContent);\n var mHdr = this.header.querySelector('.' + literals.movableHeader);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (this.parent.isFrozenGrid()) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n EventHandler.add(this.content, 'scroll', this.onFrozenContentScroll(), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\n }\n else {\n EventHandler.add(this.content, 'scroll', this.onContentScroll(this.header), this);\n EventHandler.add(this.header, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (sHeight < clientHeight) {\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (_this.parent.isFrozenGrid()) {\n addClass(_this.parent.getContent().querySelector('.' + literals.movableContent).querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (_this.parent.getFrozenRightColumnsCount()) {\n addClass(_this.parent.getContent().querySelector('.e-frozen-right-content').querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\n }\n if (!args.cancel) {\n if ((_this.parent.frozenRows > 0 || _this.parent.isFrozenGrid()) && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft = _this.previousValues.left;\n }\n else {\n _this.header.scrollLeft = _this.previousValues.left;\n }\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n }\n if (_this.parent.isFrozenGrid() && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft =\n _this.content.querySelector('.' + literals.movableContent).scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, getCellByColAndRowIndex, parentsUntil, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.' + literals.movableContent)) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === literals.leftRight && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === literals.leftRight && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === literals.leftRight && frRow) {\n mObj[\"\" + frozenRightRow] = frRow;\n mObj[\"\" + previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.clearRow();\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === literals.leftRight ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n if (gObj.isFrozenGrid()) {\n var mRows = gObj.getMovableRows();\n if (mRows && mRows.length) {\n mRow_1.push(mRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n if (gObj.getFrozenMode() === literals.leftRight) {\n var frRows = gObj.getFrozenRightRows();\n if (frRows && frRows.length) {\n fRightRow_1.push(frRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n }\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (movableRow) {\n if (!_this.disableUI) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, undefined, fRightRow_1);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, fRightRow_1);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return (this.parent.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === literals.frozenLeft ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === literals.frozenRight ? gObj.getFrozenRightRowsObject() : []\n ]);\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === literals.frozenRight ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var frzCols = this.parent.isFrozenGrid();\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells[0] && cells[0].classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n var frzCols = gObj.isFrozenGrid();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n var col = gObj.getColumnByIndex(rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n else {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 1 + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.contentModule.getMovableContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.contentModule.getFrozenRightContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.headerModule.getFrozenRightHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight;\n var totalWidth = this.parent.element.clientWidth;\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)]\n .querySelectorAll(cls)));\n }\n }\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n document.body.classList.remove('e-disableuserselect');\n if (this.element) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.contentModule.getMovableContent().appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getFrozenRightHeader().appendChild(this.autofill);\n }\n else {\n this.parent.getFrozenRightContent().appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && this.selectionSettings.type === 'Single') {\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === literals.leftRight;\n if ((!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) && !this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n for (var i = 0; i < res.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, res[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && res[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = res[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = res;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n for (var _d = 0, _e = this.parent.currentViewData; _d < _e.length; _d++) {\n var data = _e[_d];\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if (this.parent.isCheckBoxSelection && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && stateStr === 'Uncheck') {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (stateStr === 'Intermediate') {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n };\n Selection.prototype.someDataSelected = function () {\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length\n || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n if ((checkToSelectAll && isFiltered && this.getData().length) || (!isFiltered\n && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.getData().length && checkedLen === this.getData().length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && (checkedLen === this.parent.totalDataRecordsCount)) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute(literals.dataColIndex));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).getElementsByClassName(literals.rowCell)[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex)\n .getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n else {\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === literals.frozenRight) {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.' + literals.movableContent)) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n if (col.getFreezeTableName() === literals.frozenRight) {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode;\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if (isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, classList } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { setCssInGridPopUp, getActualPropFromColl, isActionPrevent, iterateExtend, parentsUntil } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n /**\n * Constructor for Grid sorting module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SortSettings} sortSettings - specifies the SortSettings\n * @param {string[]} sortedColumns - specifies the string\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[parseInt(i.toString(), 10)], sortedCols);\n if (this.columnName === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[parseInt(i.toString(), 10)]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n // eslint-disable-next-line no-self-assign\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: events.actionComplete\n } : { requestType: 'sorting', type: events.actionComplete };\n this.isRemove = false;\n this.parent.trigger(events.actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols;\n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[parseInt(i.toString(), 10)]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: events.actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: events.actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(events.modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[parseInt(i.toString(), 10)].isFromGroup) {\n this.sortedColumns.push(sortColumns[parseInt(i.toString(), 10)].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[parseInt(i.toString(), 10)].field);\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n var args = { requestType: 'sorting', type: events.actionBegin, target: this.currentTarget };\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(events.modelChanged, args);\n }\n break;\n }\n }\n if (!args.cancel) {\n this.addSortIcons();\n }\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.setFullScreenDialog },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.sortComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.click, handler: this.clickHandler },\n { event: events.headerRefreshed, handler: this.refreshSortIcons },\n { event: events.keyPressed, handler: this.keyPressed },\n { event: events.cancelBegin, handler: this.cancelBeginEvent },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the sorting\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowSorting)) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.getElementsByClassName('e-ascending').length ? 'Ascending' :\n 'Descending';\n this.isMultiSort = e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey);\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.getElementsByClassName('e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n }\n else {\n this.sortColumn(field, direction, this.isMultiSort);\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, (cols[parseInt(i.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n };\n Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping\n && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1\n && !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[parseInt(i.toString(), 10)].field === field) {\n return this.sortSettings.columns[parseInt(i.toString(), 10)];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function (params) {\n if (params === void 0) { params = { args: { isFrozen: false } }; }\n if (!params.args.isFrozen) {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n }\n };\n /**\n * To show the responsive custom sort dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Sort.prototype.showCustomSort = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, select, removeClass } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.isSearched = false;\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[\"\" + item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[\"\" + item].text = '';\n this.predefinedItems[\"\" + item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n var classList = this.parent.cssClass ? 'e-input-group e-search ' + this.parent.cssClass\n : 'e-input-group e-search';\n this.element.querySelector('.e-search-wrapper').innerHTML = '
\\\n \\\n \\\n \\\n
';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = '\\\n \\\n
';\n }\n }\n this.bindSearchEvents();\n };\n Toolbar.prototype.createToolbar = function () {\n var items = this.getItems();\n this.toolbar = new tool({\n items: items,\n clicked: this.toolbarClickHandler.bind(this),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n created: this.toolbarCreated.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.toolbar.isReact = this.parent.isReact;\n this.toolbar.on('render-react-toolbar-template', this.addReactToolbarPortals, this);\n var isStringTemplate = 'isStringTemplate';\n this.toolbar[\"\" + isStringTemplate] = true;\n var viewStr = 'viewContainerRef';\n var registerTemp = 'registeredTemplate';\n if (this.parent[\"\" + viewStr]) {\n this.toolbar[\"\" + registerTemp] = {};\n this.toolbar[\"\" + viewStr] = this.parent[\"\" + viewStr];\n }\n this.element = this.parent.createElement('div', { id: this.gridID + '_toolbarItems' });\n if (this.parent.enableAdaptiveUI) {\n this.element.classList.add('e-res-toolbar');\n }\n if (this.parent.toolbarTemplate) {\n if (typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\n }\n else {\n var isReactCompiler = this.parent.isReact && typeof (this.parent.toolbarTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var ID = this.parent.element.id + 'toolbarTemplate';\n if (isReactCompiler || isReactChild) {\n templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', ID, null, null, this.element);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate'));\n }\n }\n this.element.classList.add('e-temp-toolbar');\n }\n else {\n this.toolbar.appendTo(this.element);\n }\n this.parent.element.insertBefore(this.element, this.parent.getHeaderContent());\n var tlbrLeftElement = this.element.querySelector('.e-toolbar-left');\n var tlbrCenterElement = this.element.querySelector('.e-toolbar-center');\n var tlbrRightElement = this.element.querySelector('.e-toolbar-right');\n var tlbrItems = this.element.querySelector('.e-toolbar-items');\n var tlbrElement = this.element;\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth || tlbrItemsWidth > tlbrWidth) {\n this.toolbar.refreshOverflow();\n }\n };\n Toolbar.prototype.addReactToolbarPortals = function (args) {\n if (this.parent.isReact && args) {\n this.parent.portals = this.parent.portals.concat(args);\n this.parent.renderTemplates();\n }\n };\n Toolbar.prototype.renderResponsiveSearch = function (isRender) {\n if (isRender) {\n this.toolbarCreated(true);\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isSearch);\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.add('e-responsive-right');\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n this.searchBoxObj.searchFocus({ target: this.searchElement });\n this.searchElement.focus();\n }\n else {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n Toolbar.prototype.refreshResponsiveToolbarItems = function (action) {\n if (action === ResponsiveToolbarAction.isInitial) {\n var id = this.parent.element.id;\n var items = [id + '_edit', id + '_delete'];\n var selectedRecords = this.parent.getSelectedRowIndexes();\n var excludingItems = [id + '_responsiveback', id + '_update', id + '_cancel'];\n for (var _i = 0, _a = this.toolbar.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var toolbarEle = item.template.length ? this.toolbar.element.querySelector(item.template) : this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n if (selectedRecords.length) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n else {\n if (excludingItems.indexOf(item.id) === -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n if (this.searchElement) {\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.remove('e-responsive-right');\n this.toolbarCreated(false);\n this.unWireEvent();\n this.searchElement = undefined;\n }\n }\n if (action === ResponsiveToolbarAction.isSearch) {\n var items = [this.parent.element.id + '_responsiveback', this.parent.element.id + '_search'];\n for (var _b = 0, _c = this.toolbar.items; _b < _c.length; _b++) {\n var item = _c[_b];\n var toolbarEle = this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.refreshToolbarItems = function (args) {\n var gObj = this.parent;\n var enableItems = [];\n var disableItems = [];\n var edit = gObj.editSettings;\n var hasData = gObj.currentViewData && gObj.currentViewData.length;\n if (edit.allowAdding) {\n enableItems.push(this.gridID + '_add');\n }\n else {\n disableItems.push(this.gridID + '_add');\n }\n if (edit.allowEditing && hasData) {\n enableItems.push(this.gridID + '_edit');\n }\n else {\n disableItems.push(this.gridID + '_edit');\n }\n if (edit.allowDeleting && hasData) {\n enableItems.push(this.gridID + '_delete');\n }\n else {\n disableItems.push(this.gridID + '_delete');\n }\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.getElementsByClassName('e-updatedtd').length && (edit.allowAdding || edit.allowEditing)) {\n enableItems.push(this.gridID + '_update');\n enableItems.push(this.gridID + '_cancel');\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n else {\n if (gObj.isEdit && (edit.allowAdding || edit.allowEditing)) {\n enableItems = [this.gridID + '_update', this.gridID + '_cancel'];\n disableItems = [this.gridID + '_add', this.gridID + '_edit', this.gridID + '_delete'];\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n this.enableItems(enableItems, true);\n this.enableItems(disableItems, false);\n };\n Toolbar.prototype.getItems = function () {\n var items = [];\n var toolbarItems = this.parent.toolbar || [];\n if (typeof (this.parent.toolbar) === 'string') {\n return [];\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n items.push(this.getItemObject('responsiveFilter'));\n }\n if (this.parent.allowSorting) {\n items.push(this.getItemObject('responsiveSort'));\n }\n }\n for (var _i = 0, toolbarItems_1 = toolbarItems; _i < toolbarItems_1.length; _i++) {\n var item = toolbarItems_1[_i];\n switch (typeof item) {\n case 'number':\n items.push(this.getItemObject(this.items[item]));\n break;\n case 'string':\n items.push(this.getItemObject(item));\n break;\n default:\n items.push(this.getItem(item));\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n items.push(this.getItemObject('responsiveBack'));\n }\n return items;\n };\n Toolbar.prototype.getItem = function (itemObject) {\n var item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n };\n Toolbar.prototype.getItemObject = function (itemName) {\n return this.predefinedItems[\"\" + itemName] || { text: itemName, id: this.gridID + '_' + itemName };\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var element = select('#' + item, this.element);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var _this = this;\n var gObj = this.parent;\n var gID = this.gridID;\n extend(args, { cancel: false });\n var newArgs = args;\n var originalEvent = args.originalEvent;\n gObj.trigger(events.toolbarClick, newArgs, function (toolbarargs) {\n toolbarargs.originalEvent = toolbarargs.originalEvent ? toolbarargs.originalEvent : originalEvent;\n if (!toolbarargs.cancel) {\n switch (!isNullOrUndefined(toolbarargs.item) && toolbarargs.item.id) {\n case gID + '_print':\n gObj.print();\n break;\n case gID + '_edit':\n gObj.startEdit();\n break;\n case gID + '_update':\n gObj.endEdit();\n break;\n case gID + '_cancel':\n gObj.closeEdit();\n break;\n case gID + '_add':\n gObj.addRecord();\n break;\n case gID + '_delete':\n gObj.deleteRecord();\n break;\n case gID + '_search':\n if (toolbarargs.originalEvent.target.id === gID + '_searchbutton' && _this.searchElement) {\n _this.search();\n }\n else if (gObj.enableAdaptiveUI && !_this.searchElement\n && (toolbarargs.originalEvent.target.classList.contains('e-search-wrapper')\n || toolbarargs.originalEvent.target.id === gID + '_searchbutton')) {\n _this.renderResponsiveSearch(true);\n }\n else if (toolbarargs.originalEvent.target.classList.contains('e-clear-icon') && toolbarargs.originalEvent.target.id === gID + '_clearbutton' && _this.searchElement) {\n _this.searchElement.value = '';\n _this.sIcon.classList.remove('e-clear-icon');\n _this.sIcon.removeAttribute('title');\n _this.sIcon.style.cursor = 'default';\n if (_this.isSearched) {\n _this.parent.search(_this.searchElement.value);\n _this.isSearched = false;\n }\n }\n break;\n case gID + '_columnchooser':\n /* eslint-disable */\n var tarElement = _this.parent.element.querySelector('.e-ccdiv');\n var y = tarElement.getBoundingClientRect().top;\n var x = tarElement.getBoundingClientRect().left;\n var targetEle = toolbarargs.originalEvent.target;\n /* eslint-enable */\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\n break;\n case gID + '_responsivefilter':\n gObj.showResponsiveCustomFilter();\n break;\n case gID + '_responsivesort':\n gObj.showResponsiveCustomSort();\n break;\n case gID + '_responsiveback':\n _this.renderResponsiveSearch(false);\n break;\n }\n }\n });\n };\n Toolbar.prototype.modelChanged = function (e) {\n if (e.module === 'edit') {\n this.refreshToolbarItems();\n }\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.keyUpHandler = function (e) {\n if (e.keyCode === 13) {\n this.search();\n }\n if (this.searchElement) {\n this.sIcon = this.searchElement.parentElement.querySelector('.e-sicon');\n if (this.searchElement.value.length && !isNullOrUndefined(this.sIcon)) {\n this.sIcon.classList.add('e-clear-icon');\n this.sIcon.setAttribute('title', 'Clear');\n this.sIcon.style.cursor = 'pointer';\n }\n else {\n this.sIcon.classList.remove('e-clear-icon');\n this.sIcon.removeAttribute('title');\n this.sIcon.style.cursor = 'default';\n }\n }\n };\n Toolbar.prototype.search = function () {\n this.isSearched = true;\n this.parent.search(this.searchElement.value);\n };\n Toolbar.prototype.updateSearchBox = function () {\n if (this.searchElement) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.searchElement) {\n this.searchBoxObj = new SearchBox(this.searchElement);\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n this.searchBoxObj.unWireEvent();\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n };\n Toolbar.prototype.onFocusIn = function (e) {\n var currentInfo = this.parent.focusModule.currentInfo;\n if (currentInfo && currentInfo.element) {\n removeClass([currentInfo.element, currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n currentInfo.element.tabIndex = -1;\n }\n e.target.tabIndex = 0;\n };\n Toolbar.prototype.onFocusOut = function (e) {\n e.target.tabIndex = -1;\n };\n Toolbar.prototype.setFocusToolbarItem = function (element) {\n var elementToFocus = element.querySelector('.e-btn,.e-input,.e-toolbar-item-focus');\n if (!elementToFocus && this.parent.enableAdaptiveUI && !this.searchElement\n && element.classList.contains('e-search-wrapper')) {\n elementToFocus = element.querySelector('#' + this.gridID + '_searchbutton');\n }\n elementToFocus.focus();\n };\n Toolbar.prototype.getFocusableToolbarItems = function () {\n var getFocusToolbarElements = [].slice.call(this.element.querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)'));\n var getFocusToolbarItems = [];\n for (var i = 0; i < getFocusToolbarElements.length; i++) {\n if (!isNullOrUndefined(getFocusToolbarElements[parseInt(i.toString(), 10)].querySelector('.e-btn,.e-input,.e-toolbar-item-focus'))) {\n getFocusToolbarItems.push(getFocusToolbarElements[parseInt(i.toString(), 10)]);\n }\n }\n return getFocusToolbarItems;\n };\n Toolbar.prototype.keyPressedHandler = function (e) {\n if (e.target && parentsUntil(e.target, 'e-toolbar-item')) {\n var targetParent = parentsUntil(e.target, 'e-toolbar-item');\n var focusableToolbarItems = this.getFocusableToolbarItems();\n if (e.action === 'tab' || e.action === 'shiftTab') {\n if ((e.action === 'tab' && targetParent === focusableToolbarItems[focusableToolbarItems.length - 1])\n || (e.action === 'shiftTab' && targetParent === focusableToolbarItems[0])) {\n return;\n }\n for (var i = 0; i < focusableToolbarItems.length; i++) {\n if (targetParent === focusableToolbarItems[parseInt(i.toString(), 10)]) {\n e.preventDefault();\n var index = e.action === 'tab' ? i + 1 : i - 1;\n this.setFocusToolbarItem(focusableToolbarItems[parseInt(index.toString(), 10)]);\n return;\n }\n }\n }\n if (e.action === 'enter') {\n if (this.parent.enableAdaptiveUI && !this.searchElement\n && e.target.id === this.gridID + '_searchbutton') {\n this.renderResponsiveSearch(true);\n }\n }\n }\n };\n Toolbar.prototype.reRenderToolbar = function () {\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.reRenderToolbar },\n { event: events.initialEnd, handler: this.render },\n { event: events.uiUpdate, handler: this.onPropertyChanged },\n { event: events.inBoundModelChanged, handler: this.updateSearchBox.bind(this) },\n { event: events.modelChanged, handler: this.refreshToolbarItems },\n { event: events.toolbarRefresh, handler: this.refreshToolbarItems },\n { event: events.inBoundModelChanged, handler: this.modelChanged },\n { event: events.dataBound, handler: this.refreshToolbarItems },\n { event: events.click, handler: this.removeResponsiveSearch },\n { event: events.rowModeChange, handler: this.reRenderToolbar },\n { event: events.destroy, handler: this.destroy },\n { event: events.keyPressed, handler: this.keyPressedHandler }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.rowSelectedFunction = this.rowSelected.bind(this);\n this.rowDeSelectedFunction = this.rowSelected.bind(this);\n this.parent.addEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.addEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.removeEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeResponsiveSearch = function (e) {\n var target = e.target;\n var isSearch = target.classList.contains('e-search-icon') || target.classList.contains('e-search-wrapper');\n if (this.parent.enableAdaptiveUI && !isSearch && this.searchElement\n && !parentsUntil(e.target, 'e-res-toolbar')) {\n this.renderResponsiveSearch(false);\n }\n };\n Toolbar.prototype.rowSelected = function () {\n if (this.parent.enableAdaptiveUI) {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { initialLoad } from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { VirtualContentRenderer, VirtualHeaderRenderer } from '../renderer/virtual-content-renderer';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { extend, getValue, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { setComplexFieldID, setValidationRuels, getColumnModelByUid } from '../base/util';\n/**\n * Virtual Scrolling class\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualscroll';\n };\n VirtualScroll.prototype.instantiateRenderer = function () {\n this.parent.log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = this.locator.getService('rendererFactory');\n if (!this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization) {\n renderer.addRenderer(RenderType.Header, new VirtualHeaderRenderer(this.parent, this.locator));\n }\n renderer.addRenderer(RenderType.Content, new VirtualContentRenderer(this.parent, this.locator));\n }\n this.ensurePageSize();\n };\n VirtualScroll.prototype.ensurePageSize = function () {\n var rowHeight = this.parent.getRowHeight();\n var vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height;\n this.blockSize = ~~(vHeight / rowHeight);\n var height = this.blockSize * 2;\n var size = this.parent.pageSettings.pageSize;\n this.parent.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.columnWidthChanged, this.refreshVirtualElement, this);\n this.parent.on(events.createVirtualValidationForm, this.createVirtualValidationForm, this);\n this.parent.on(events.validateVirtualForm, this.virtualEditFormValidation, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.instantiateRenderer);\n this.parent.off(events.columnWidthChanged, this.refreshVirtualElement);\n this.parent.off(events.createVirtualValidationForm, this.createVirtualValidationForm);\n this.parent.off(events.validateVirtualForm, this.virtualEditFormValidation);\n this.parent.off(events.destroy, this.destroy);\n };\n VirtualScroll.prototype.getCurrentEditedData = function (prevData) {\n var data = {\n virtualData: extend({}, {}, prevData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n return data.virtualData;\n };\n VirtualScroll.prototype.createVirtualValidationForm = function (e) {\n var gObj = this.parent;\n if (gObj.enableVirtualization && gObj.editSettings.mode === 'Normal') {\n var cols = gObj.columns;\n var rowRenderer = new RowRenderer(this.locator, null, this.parent);\n var rowObj = extend({}, {}, gObj.getRowObjectFromUID(e.uid), true);\n gObj.notify(events.refreshVirtualEditFormCells, rowObj);\n var args = e.argsCreator(this.getCurrentEditedData(e.prevData), {}, false);\n args.isCustomFormValidation = true;\n args.row = rowRenderer.render(rowObj, cols);\n e.renderer.update(args);\n var rules = {};\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].validationRules) {\n setValidationRuels(cols[parseInt(i.toString(), 10)], 0, rules, {}, {}, cols.length, true);\n }\n }\n args.form.classList.add('e-virtual-validation');\n gObj.editModule.virtualFormObj = gObj.editModule.createFormObj(args.form, rules);\n }\n };\n VirtualScroll.prototype.virtualEditFormValidation = function (args) {\n var gObj = this.parent;\n var error = gObj.element.querySelector('.e-griderror:not([style*=\"display: none\"])');\n if (gObj.editModule.virtualFormObj) {\n if (error && error.style.display !== 'none') {\n var errorDomRect = error.getBoundingClientRect();\n var forms = gObj.element.querySelectorAll('.e-gridform');\n var form = forms[0];\n var contentLeft = gObj.getContent().getBoundingClientRect().left;\n if (forms.length > 1) {\n form = gObj.getFrozenMode() !== 'Right' ? forms[1] : forms[0];\n contentLeft = gObj.getMovableVirtualContent().getBoundingClientRect().left;\n }\n if (errorDomRect.left < contentLeft || errorDomRect.right > gObj.element.offsetWidth) {\n var tooltip = form.querySelector('.e-tooltip-wrap:not([style*=\"display: none\"])');\n this.scrollToEdit(tooltip, { editIdx: args.editIdx, addIdx: args.addIdx }, true);\n }\n }\n else if (gObj.editModule.virtualFormObj && (!error || error.style.display === 'none')) {\n var existingErrors = gObj.editModule.virtualFormObj.element.querySelectorAll('.e-tooltip-wrap:not([style*=\"display: none\"])');\n for (var i = 0; i < existingErrors.length; i++) {\n remove(existingErrors[parseInt(i.toString(), 10)]);\n }\n this.setEditedDataToValidationForm(gObj.editModule.virtualFormObj.element, this.getCurrentEditedData(args.prevData));\n args.isValid = gObj.editModule.virtualFormObj.validate();\n if (!args.isValid) {\n var tooltip = gObj.editModule.virtualFormObj.element.querySelector('.e-tooltip-wrap:not([style*=\"display: none\"])');\n this.scrollToEdit(tooltip, { editIdx: args.editIdx, addIdx: args.addIdx });\n }\n }\n }\n };\n VirtualScroll.prototype.scrollToEdit = function (tooltip, args, isRenderer) {\n var gObj = this.parent;\n if (tooltip) {\n var cols = gObj.columnModel;\n var field = setComplexFieldID(tooltip.id).split('_')[0];\n var col = gObj.getColumnByField(field);\n var scrollTop = this.parent.getContent().firstElementChild.scrollTop;\n var row = gObj.getRowByIndex(args.editIdx);\n if (isRenderer || !col || (!isNullOrUndefined(args.addIdx) && scrollTop > 0) || (!isNullOrUndefined(args.editIdx) && !row)) {\n var validationCol = void 0;\n for (var i = 0; i < cols.length && !col; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n validationCol = cols[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (isRenderer) {\n validationCol = col;\n }\n this.parent.notify(events.scrollToEdit, validationCol);\n }\n }\n };\n VirtualScroll.prototype.setEditedDataToValidationForm = function (form, editedData) {\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col = getColumnModelByUid(this.parent, inputs[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n var value = getValue(col.field, editedData);\n value = isNullOrUndefined(value) ? '' : value;\n inputs[parseInt(i.toString(), 10)].value = value;\n }\n };\n VirtualScroll.prototype.refreshVirtualElement = function (args) {\n if (this.parent.enableColumnVirtualization && args.module === 'resize') {\n var renderer = this.locator.getService('rendererFactory');\n renderer.getRenderer(RenderType.Content).refreshVirtualElement();\n }\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterafteropen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nexport var filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 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 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 (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 EventHandler.add(this.element, 'DOMNodeInserted', this.updateTarget, this);\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.updateTarget = function (e) {\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 };\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 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 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 === '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 EventHandler.remove(this.element, 'DOMNodeInserted', this.updateTarget);\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 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 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 }\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","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, renderMovable, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('wildcard')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this.requireTemplateRef = true;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /** @hidden */\n _this.isManualRefresh = false;\n /** @hidden */\n _this.isAutoFitColumns = false;\n /** @hidden */\n _this.enableDeepCompare = false;\n /** @hidden */\n _this.totalDataRecordsCount = 0;\n /** @hidden */\n _this.disableSelectedRecords = [];\n /** @hidden */\n _this.partialSelectedRecords = [];\n /** @hidden */\n _this.islazyloadRequest = false;\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n /** @hidden */\n _this.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { datarole: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = this.enableVirtualization && axisDirection ? true : false;\n if (!this.contentMaskTable && !(this.isFrozenGrid() && this.enableColumnVirtualization && axisDirection === 'X')) {\n var content = gridContent;\n if (this.isFrozenGrid()) {\n if (!this.isInitialLoad && !this.enableVirtualization && this.frozenRows && this.height !== 'auto') {\n var contentHeight = content.getBoundingClientRect().height - (this.frozenRows * this.getRowHeight());\n content.style.height = contentHeight + 'px';\n }\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))\n && !((this.isFrozenGrid() && ((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableColumnVirtualization && axisDirection === 'X')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))))) {\n var content = gridHeader;\n if (this.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-header, .e-frozen-right-header');\n }\n else if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (!this.movableHeaderMaskTable && this.isFrozenGrid() && !((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.movableHeaderMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n if (!this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right'\n && !((this.enableVirtualization && axisDirection === 'Y') || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n this.rightHeaderMaskTable = this.createMaskTable(gridHeader\n .querySelector('.e-frozen-right-header'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (!this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.movableContentMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n }\n if (!this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.rightContentMaskTable = this.createMaskTable(gridContent\n .querySelector('.e-frozen-right-content'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n if (this.isFrozenGrid()) {\n footerContent = footerContent.querySelector('.e-frozen-left-footercontent, .e-frozen-right-footercontent');\n }\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n if (this.isFrozenGrid()) {\n if (!this.movableFooterContentMaskTable) {\n this.movableFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-movablefootercontent'));\n }\n if (this.getFrozenMode() === 'Left-Right' && !this.rightFooterContentMaskTable) {\n this.rightFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-frozen-right-footercontent'));\n }\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n var columns = this.getColumns();\n if (this.isFrozenGrid()) {\n if (this.getFrozenMode() === 'Left' || this.getFrozenMode() === 'Left-Right') {\n columns = this.frozenColumns ? columns.slice(0, this.frozenColumns) : this.getFrozenLeftColumns();\n }\n else if (this.getFrozenMode() === 'Right') {\n columns = this.getFrozenRightColumns();\n }\n }\n return columns;\n };\n Grid.prototype.getMovableContentMaskColumns = function () {\n var gridColumns = this.getColumns();\n var columns = this.frozenColumns ? gridColumns.slice(this.frozenColumns, gridColumns.length)\n : this.getMovableColumns();\n return columns;\n };\n Grid.prototype.getRightContentMaskColumns = function () {\n return this.getFrozenRightColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n if (this.isFrozenGrid()) {\n if (content) {\n parentElement.style.overflow = 'hidden';\n }\n parentElement.style.position = 'relative';\n }\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.removeAttribute('aria-multiselectable');\n maskTable.removeAttribute('aria-colcount');\n maskTable.removeAttribute('aria-rowcount');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '1';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || (header && this.isFrozenGrid())) {\n var rowCountElement = gridContent;\n var rowCount = header && this.isFrozenGrid() ? this.frozenRows\n : Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = content && this.isFrozenGrid() && this.frozenRows ? this.frozenRows + 1 : 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (header && this.isFrozenGrid()) || (this.enableVirtualization && axisDirection) ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (header && this.isFrozenGrid() && tbody\n .getBoundingClientRect().height < maskTable.querySelector('tbody').getBoundingClientRect().height) {\n var maskTableHolderHeight = maskTable.querySelector('tbody')\n .getBoundingClientRect().height - tbody.getBoundingClientRect().height;\n var maskTableHolder = this.createElement('div', { className: 'e-masked-table-holder', attrs: {\n style: 'height: ' + maskTableHolderHeight + 'px;'\n } });\n parentElement.appendChild(maskTableHolder);\n }\n else if (header && this.isFrozenGrid() && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.height = parentElement\n .getBoundingClientRect().height - table.querySelector('thead').getBoundingClientRect().height + 'px';\n }\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n maskCell.removeAttribute('data-colindex');\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n var maskTables = [this.headerMaskTable, this.movableHeaderMaskTable, this.rightHeaderMaskTable,\n this.contentMaskTable, this.movableContentMaskTable, this.rightContentMaskTable, this.footerContentMaskTable,\n this.movableFooterContentMaskTable, this.rightFooterContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n if (this.isFrozenGrid() && !closest(maskTable, '.e-gridfooter')) {\n var parent_1 = maskTable.parentElement;\n parent_1.style.overflow = '';\n parent_1.style.position = '';\n if (closest(maskTable, '.e-frozen-left-header') || closest(maskTable, '.e-movableheader')\n || closest(maskTable, '.e-frozen-right-header')) {\n var maskTableHolder = parent_1.querySelector('.e-masked-table-holder');\n if (maskTableHolder) {\n remove(maskTableHolder);\n }\n }\n }\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.movableHeaderMaskTable = null;\n this.rightHeaderMaskTable = null;\n this.contentMaskTable = null;\n this.movableContentMaskTable = null;\n this.rightContentMaskTable = null;\n this.footerContentMaskTable = null;\n this.movableFooterContentMaskTable = null;\n this.rightFooterContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable) {\n var content = gridContent;\n if (this.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.headerMaskTable && this.isFrozenGrid()) {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-left-header, .e-frozen-right-header'));\n }\n if (this.movableHeaderMaskTable && this.isFrozenGrid()) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-right-header'));\n }\n if (this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridContent.querySelector('.e-frozen-right-content'));\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact || this.isVue) {\n this.destroyTemplate(['template']);\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n }\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (col.freeze === 'Left') {\n col.freezeTable = literals.frozenLeft;\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = literals.frozenRight;\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n if (!totalFrozenCount && !directFrozenCount && !isNullOrUndefined(col.freezeTable)) {\n col.freezeTable = undefined;\n }\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[parseInt(index.toString(), 10)];\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row) && !row.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.' + literals.row);\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[parseInt(cellIndex.toString(), 10)].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === literals.frozenLeft) {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === literals.frozenRight) {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.isFrozenGrid() ? this.getFrozenLeftContentTbody()\n : this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody)\n : this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.frozenContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var isRight = this.getFrozenMode() === 'Right';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = col.getFreezeTableName() === 'movable' ? this.contentModule.getMovableRows() :\n col.getFreezeTableName() === 'frozen-right' ? this.getFrozenRightRowsObject() : this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = this.getFrozenLeftColumnsCount() || this.getFrozenColumns();\n var movable = this.getMovableColumnsCount();\n if (this.isRowDragable() && !isRight) {\n left++;\n }\n var frIdx = left + movable;\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = col.getFreezeTableName() === 'movable' ? left : col.getFreezeTableName() === 'frozen-right' ? frIdx : 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable() && !isRight) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var isChildGrid = _this.childGrid && _this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this.getContentTable().querySelectorAll('.e-row') :\n _this.getDataRows();\n var indent = _this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = _this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) && !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(_this, _this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : _this.getCellFromIndex(j, i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n if (renderTemplates) {\n _this.renderTemplates();\n }\n });\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this, this.serviceLocator);\n var td = parentsUntil(this.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n }\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.isFrozenGrid()) {\n var currentTbl = parentsUntil(selectRowEle[0], 'e-table');\n var currentTblName = currentTbl.parentElement.matches('.e-frozen-left-header,.e-frozen-left-content') ? 'left'\n : currentTbl.parentElement.matches('.e-frozen-right-header,.e-frozen-right-content') ? 'right' : 'movable';\n var mTr = this.getMovableRowsObject()[selectedRow.index];\n this.setFrozenRowData(mTr, rowData);\n if (currentTblName === 'left') {\n var lTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(lTr, rowData);\n }\n if (currentTblName === 'right' || this.frozenRightColumns.length > 0) {\n var rTr = this.getFrozenRightRowsObject()[selectedRow.index];\n this.setFrozenRowData(rTr, rowData);\n }\n }\n else if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)] &&\n this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[parseInt(rowIndex.toString(), 10)] && rows[parseInt(rowIndex.toString(), 10)]\n .getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitFrozenCount(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
\n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_1.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n this.element.classList.add(this.cssClass);\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('aria-describedby')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /**\n * @param {MouseEvent} e - Defines the mouse event\n * @returns {void}\n * @hidden\n */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, literals.row);\n if ([].slice.call(this.element.getElementsByClassName('e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.getElementsByClassName('e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[data-rowindex=\"' + row.getAttribute(literals.dataRowIndex) + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') !== 'true' && rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.add('e-frozenhover');\n }\n else if (rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr');\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || tr.classList.contains(literals.addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n parentsUntil(relatedTarget, 'e-input-group')) && !isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group'))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.' + literals.table);\n remove(mTbl.querySelector(literals.colGroup));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector(literals.tbody));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.' + literals.table);\n remove(frTbl.querySelector(literals.colGroup));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup)).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector(literals.tbody));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (field === gCols[parseInt(i.toString(), 10)].field || (gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.movableContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.frozenContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.movableHeader);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.frozenHeader);\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector(literals.tbody).children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector(literals.tbody).children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector(literals.tbody).children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector(literals.tbody).children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector(literals.tbody).children)).concat(frozenRigtRows);\n }\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, this.currencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[parseInt(index.toString(), 10)];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_3.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n else {\n mTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector(literals.tbody);\n }\n return tbody;\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('21.1.35')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined, closest } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime') {\n args = { type: column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {Element} ele - Defines the element\n * @param {number} frzCols - Defines the frozen columns\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(isFrozen ? gObj.getColumns() : gObj[\"\" + key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {HTMLElement} mTD - Defines the movable TD\n * @param {HTMLElement} fTD - Defines the Frozen TD\n * @returns {void}\n * @hidden\n */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.' + literals.row).getBoundingClientRect().height;\n var fHeight = closest(fTD, '.' + literals.row).getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === literals.leftRight ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === literals.leftRight) {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Cell} cells - Defines the callback function\n * @param {freezeTable} tableName - Defines the row\n * @returns {Cell[]} Returns the cell\n * @hidden\n */\nexport function splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === literals.frozenLeft) {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === literals.frozenRight) {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object.\n * @param {boolean} visibleOnly - Defines to return only visible columns.\n * @returns {{frozenLeft: Column[], movable: Column[], frozenRight: Column[]}} - Returns all frozenLeft, movable and frozenRight Columns as object.\n * @hidden\n */\nexport function getExactFrozenMovableColumn(gObj, visibleOnly) {\n var columnModel = gObj.getColumns();\n var movableColumns = [];\n var frozenLeftColumns = [];\n var frozenRightColumns = [];\n for (var i = 0; i < columnModel.length; i++) {\n if (isNullOrUndefined(visibleOnly) || !visibleOnly || visibleOnly === columnModel[parseInt(i.toString(), 10)].visible) {\n if (columnModel[parseInt(i.toString(), 10)].freeze === 'Left' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-left') {\n frozenLeftColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else if (columnModel[parseInt(i.toString(), 10)].freeze === 'Right' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-right') {\n frozenRightColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else {\n movableColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n }\n }\n return { frozenLeft: frozenLeftColumns, movable: movableColumns, frozenRight: frozenRightColumns };\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n if (rowObj) {\n callBack(literals.frozenLeft, rows[0], rowObj[0]);\n }\n else {\n callBack(literals.frozenLeft, rows[0]);\n }\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n if (rowObj) {\n callBack('movable', rows[1], rowObj[1]);\n }\n else {\n callBack('movable', rows[1]);\n }\n }\n if ((gObj.getFrozenMode() === literals.leftRight || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n if (rowObj) {\n callBack(literals.frozenRight, rows[2], rowObj[2]);\n }\n else {\n callBack(literals.frozenRight, rows[2]);\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Row} Returns the row\n * @hidden\n */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n return [].slice.call(gObj.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === literals.frozenRight\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getMovableTbody(gObj) {\n var tbody;\n if (gObj.isFrozenGrid()) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === literals.leftRight) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\n/**\n * @param {Element} tbody - Table body\n * @param {Element} mTbody - Movanle table body\n * @param {Element} frTbody - Frozen right table body\n * @param {Element[]} tr - Table rows\n * @param {Element[]} mTr - Movable table rows\n * @param {Element[]} frTr - Frozen right table rows\n * @param {Function} callBack - Callback function\n * @returns {void}\n * @hidden\n */\nexport function setRowsInTbody(tbody, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody && tr) {\n callBack(tbody, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if (isContent && parent.isRowDragable()) {\n var index = parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n if (this.cBox.querySelector('.e-add-current') && this.cBox.querySelector('.e-add-current').classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n this.initiateFilter(coll);\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'wildcard' : 'equal') : (this.options.type ? 'wildcard' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns) {\n var predicates = CheckBoxFilterBase.getPredicate(columns);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (!args.query.distincts.length) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n query.distinct(filteredColumn);\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n for (var j = 0; j < e.length; j++) {\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.queryGenerate(query);\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput) {\n this.sInput.focus();\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.updateResult();\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(events.beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.getPredicateFromCols(this.options.filteredColumns);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n addClass([checkBox], [this.parent.cssClass]);\n }\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n cBoxes.appendChild(predicateElement);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[parseInt(i.toString(), 10)]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n value = getObject(field, value); //local remote diff, check with mdu\n if (!(value in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + value] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime') {\n predicate = getDatePredicate(first, first.type);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && cols[parseInt(p.toString(), 10)].predicate === 'or') {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type));\n }\n else {\n predicate.predicates.push(new Predicate(cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n if (this.isVue && value && value === this.value) {\n this.checked = true;\n }\n if (this.isVue ? this.value && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelRippleHandler = function (e) {\n var ripple = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, ripple);\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (!isNullOrUndefined(this.htmlAttributes) && this.htmlAttributes.value) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (ATTRIBUTES.indexOf(key) > -1) {\n var wrapper = this.element.parentElement;\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelRippleHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelRippleHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelRippleHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelRippleHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, remove, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { distinctStringValues, isComplexField, getComplexFieldID, getCustomDateFormat, applyBiggerTheme, performComplexDataOperation, registerEventHandlers, removeEventHandlers, clearReactVueTemplates } from '../base/util';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { parentsUntil, appendChildren, extend, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @class */ (function (_super) {\n __extends(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n *\n * @param {IXLFilter} parent - parent details\n * @param {Object} customFltrOperators - operator details\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.childRefs = [];\n _this.eventHandlers = {};\n _this.isDevice = false;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', 'NotContains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n var model = [];\n for (var i = 0; i < options[\"\" + type].length; i++) {\n if (options[\"\" + type][parseInt(i.toString(), 10)].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[\"\" + type][parseInt(i.toString(), 10)].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.closeDialog.call(this);\n }\n if (!this.isDevice && this.menuObj) {\n var li = this.menuObj.element.querySelector('li.e-focused');\n if (!(li && parentsUntil(li, 'e-excel-menu'))) {\n this.destroyCMenu();\n }\n }\n if (this.dlgObj && !this.dlgObj.isDestroyed) {\n this.removeDialog();\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n if (this.parent.cssClass) {\n this.menu.classList.add(this.parent.cssClass);\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[\"\" + type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(events.beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(events.refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName, attrs: { 'aria-hidden': 'true' } }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if (this.options.isResponsiveFilter\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n remove(this.cmenu);\n this.parent.notify(events.renderResponsiveCmenu, { target: null, header: '', isOpen: false, col: this.options.column });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter && this.parent.cssClass ?\n 'e-res-contextmenu-wrapper' + ' ' + this.parent.cssClass : this.options.isResponsiveFilter ?\n 'e-res-contextmenu-wrapper' : this.parent.cssClass ? this.parent.cssClass : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj['open'](height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(events.renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n this.isDevice = true;\n var contextRect = this.getContextBounds();\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n this.isDevice = false;\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg);\n }\n this.menuObj['open'](pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function () {\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target) {\n var contextWidth = this.getContextBounds().width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n if (options.cancel) {\n return;\n }\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n if (options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.renderDialogue(e);\n }\n };\n /**\n * @hidden\n * @param {MenuEventArgs} e - event args\n * @returns {void}\n */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n closeOnEscape: false,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var row = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n var templateField_1 = isComplexField(_this.options.column.field) ?\n getComplexFieldID(_this.options.column.field) : _this.options.column.field;\n var isReactCompiler = _this.parent.isReact && typeof (_this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n _this.parent.renderTemplates(function () {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n });\n }\n else {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n }\n }\n else {\n //(row.cells[1].querySelector('input:not([type=hidden])') as HTMLElement).focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-xlfl-okbtn' + ' ' + this.parent.cssClass : 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'),\n cssClass: this.parent.cssClass ? 'e-xlfl-cancelbtn' + ' ' + this.parent.cssClass : 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.childRefs.push(this.dlgObj);\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelFilterBase.prototype.removeDialog = function () {\n this.parent.notify(events.customFilterClose, {});\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n this.removeObjects(this.childRefs);\n remove(this.dlgDiv);\n this.parent.notify(events.filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(events.beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /**\n * @hidden\n * @param {string} col - Defines column details\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(events.fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: arg.arg3,\n type: this.options.type\n });\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), arg.arg3, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: arg.arg8,\n type: this.options.type\n });\n mPredicate = mPredicate[\"\" + predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields' });\n table.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[\"\" + optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n var dropOptr = new DropDownList(extend({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.filter.params));\n this.childRefs.push(dropOptr);\n var evt = { 'open': this.dropDownOpen.bind(this), 'change': this.dropDownValueChange.bind(this) };\n registerEventHandlers(optrInput.id, [literals.open, literals.change], evt, this);\n dropOptr.addEventListener(literals['open'], this.eventHandlers[optrInput.id][literals.open]);\n dropOptr.addEventListener(literals.change, this.eventHandlers[optrInput.id][literals.change]);\n dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.removeHandlersFromComponent = function (component) {\n if (component.element.classList.contains('e-dropdownlist')) {\n removeEventHandlers(component, [literals.open, literals.change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [events.actionComplete, literals.focus], this);\n }\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns filter UI\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[\"\" + column];\n var table = this.parent.createElement('table', { className: 'e-xlfl-table', attrs: { role: 'grid' } });\n dlgConetntEle.appendChild(table);\n var colGroup = this.parent.createElement(literals.colGroup);\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n var optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate' });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n var andRadio = new RadioButton({\n label: this.getLocalizedLabel('AND'),\n name: 'default', checked: true,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(andRadio);\n // Initialize OR RadioButton component.\n var orRadio = new RadioButton({\n label: this.getLocalizedLabel('OR'),\n name: 'default',\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(orRadio);\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n andRadio.element.nextElementSibling.classList.add('e-xlfl-radio-and');\n orRadio.element.nextElementSibling.classList.add('e-xlfl-radio-or');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n this.removeHandlersFromComponent(obj);\n obj.destroy();\n }\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n }\n if (isReactCompiler || isReactChild) {\n this.parent.renderTemplates(function () {\n valueDiv.querySelector('input').id = isComplex ? complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.parent.isAngular ? valueDiv.children[0] : valueDiv.querySelector('input')).id = isComplex ?\n complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n }\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n if (isNullOrUndefined(flValue)) {\n flValue = undefined;\n }\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[parseInt(predIndex.toString(), 10)] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ?\n this.options.column.columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue] :\n fltrPredicates[parseInt(indx.toString(), 10)].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column\n .columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(checkbox);\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type) || options.format;\n var datePicker = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(datePicker);\n datePicker.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var dateTimePicker = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(dateTimePicker);\n dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n var numericTextBox = new NumericTextBox(extend({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, options.column.filter.params));\n this.childRefs.push(numericTextBox);\n numericTextBox.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n this.childRefs.push(actObj);\n var evt = { 'actionComplete': this.acActionComplete(actObj, column), 'focus': this.acFocus(actObj, column, options, inputValue) };\n registerEventHandlers(inputValue.id, [events.actionComplete, literals.focus], evt, this);\n actObj.addEventListener(literals.focus, this.eventHandlers[inputValue.id][literals.focus]);\n actObj.addEventListener(events.actionComplete, this.eventHandlers[inputValue.id][events.actionComplete]);\n actObj.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.acActionComplete = function (actObj, column) {\n return function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[actObj.fields.value]) === index;\n });\n };\n };\n ExcelFilterBase.prototype.acFocus = function (actObj, column, options, inputValue) {\n var _this = this;\n return function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n };\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\nexport { ExcelFilterBase };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[\"\" + field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[\"\" + pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { isEditable, getComplexFieldID, getObject } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `AutoCompleteEditCell` is used to handle autocomplete cell type editing.\n *\n * @hidden\n */\nvar AutoCompleteEditCell = /** @class */ (function (_super) {\n __extends(AutoCompleteEditCell, _super);\n function AutoCompleteEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AutoCompleteEditCell.prototype.write = function (args) {\n this.column = args.column;\n var isInlineEdit = this.parent.editSettings.mode !== 'Dialog';\n this.object = new AutoComplete(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n // enableRtl: this.parentect.enableRtl,\n actionComplete: this.selectedValues.bind(this),\n placeholder: isInlineEdit ? '' : args.column.headerText,\n floatLabelType: isInlineEdit ? 'Never' : 'Always'\n }, args.column.edit.params));\n this.object.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n AutoCompleteEditCell.prototype.selectedValues = function (valObj) {\n valObj.result = DataUtil.distinct(valObj.result, this.object.fields.value, true);\n if (this.column.dataSource) {\n this.column.dataSource.dataSource.json = valObj.result;\n }\n };\n return AutoCompleteEditCell;\n}(EditCellBase));\nexport { AutoCompleteEditCell };\n","import { classList } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar BatchEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function BatchEditRender(parent) {\n this.parent = parent;\n }\n BatchEditRender.prototype.update = function (elements, args) {\n if (this.parent.isReact && args.columnObject && args.columnObject.template) {\n var parentRow = args.cell.parentElement;\n var newTd = args.cell.cloneNode(true);\n parentRow.insertBefore(newTd, args.cell);\n newTd.focus();\n args.cell.remove();\n args.cell = newTd;\n }\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, [literals.editedRow, 'e-batchrow'], []);\n };\n BatchEditRender.prototype.getEditElement = function (elements, args) {\n var gObj = this.parent;\n var form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n };\n BatchEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n return BatchEditRender;\n}());\nexport { BatchEditRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { extend } from '@syncfusion/ej2-base';\nimport { isEditable, addRemoveActiveClasses, createEditElement, getObject } from '../base/util';\nimport * as literals from '../base/string-literals';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `BooleanEditCell` is used to handle boolean cell type editing.\n *\n * @hidden\n */\nvar BooleanEditCell = /** @class */ (function (_super) {\n __extends(BooleanEditCell, _super);\n function BooleanEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeClasses = ['e-selectionbackground', 'e-active'];\n return _this;\n }\n BooleanEditCell.prototype.create = function (args) {\n var col = args.column;\n var classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n this.removeEventHandler = this.removeEventListener;\n return createEditElement(this.parent, args.column, classNames, { type: 'checkbox', value: args.value });\n };\n BooleanEditCell.prototype.read = function (element) {\n return element.checked;\n };\n BooleanEditCell.prototype.write = function (args) {\n var selectChkBox;\n var chkState;\n if (!isNullOrUndefined(args.row)) {\n selectChkBox = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n chkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(selectChkBox) && args.column.type === 'checkbox') {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n chkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.getElementsByClassName(literals.rowCell)), chkState].concat(this.activeClasses));\n }\n this.obj = new CheckBox(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: chkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, args.column.edit.params));\n this.addEventListener();\n this.obj.appendTo(args.element);\n };\n BooleanEditCell.prototype.addEventListener = function () {\n this.cbChange = this.checkBoxChange.bind(this);\n this.obj.addEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.checkBoxChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var add = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n add = true;\n this.editRow.setAttribute('aria-selected', add.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.getElementsByClassName(literals.rowCell)), add].concat(this.activeClasses));\n }\n };\n return BooleanEditCell;\n}(EditCellBase));\nexport { BooleanEditCell };\n","import { getZIndexCalcualtion } from '../base/util';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `boolfilterui` render boolean column.\n *\n * @hidden\n */\nvar BooleanFilterUI = /** @class */ (function () {\n function BooleanFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n BooleanFilterUI.prototype.create = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.ddOpen = this.openPopup.bind(this);\n this.ddComplete = this.actionComplete(fields);\n this.dropInstance.addEventListener(literals['open'], this.ddOpen);\n this.dropInstance.addEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.appendTo(this.elem);\n };\n BooleanFilterUI.prototype.write = function (args) {\n var drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.value = args.filteredValue;\n }\n };\n BooleanFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n var filterValue = drpuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n };\n BooleanFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n BooleanFilterUI.prototype.actionComplete = function (fields) {\n return function (e) {\n e.result = DataUtil.distinct(e.result, fields, true);\n };\n };\n BooleanFilterUI.prototype.destroy = function () {\n if (!this.dropInstance || this.dropInstance.isDestroyed) {\n return;\n }\n this.dropInstance.removeEventListener(literals['open'], this.ddOpen);\n this.dropInstance.removeEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return BooleanFilterUI;\n}());\nexport { BooleanFilterUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n if (gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.split('}')[1];\n }\n else {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n }\n break;\n }\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.isFrozenGrid() ?\n this.parent.contentModule.tempFreezeRows : this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox',\n 'aria-label': this.localizer.getConstant('CheckBoxLabel') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n td.innerHTML = '';\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n node.setAttribute('aria-label', this.localizer.getConstant('CheckBoxLabel'));\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { remove, addClass, isNullOrUndefined, extend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { FreezeContentRender, FreezeRender } from './freeze-renderer';\nimport * as events from '../base/constant';\nimport { wrap, parentsUntil, addRemoveEventListener } from '../base/util';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnFreezeHeaderRenderer is used to freeze the columns header at right and left\n *\n * @hidden\n */\nvar ColumnFreezeHeaderRenderer = /** @class */ (function (_super) {\n __extends(ColumnFreezeHeaderRenderer, _super);\n function ColumnFreezeHeaderRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.addEventListener();\n return _this;\n }\n ColumnFreezeHeaderRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.freezeRender, handler: this.refreshFreeze },\n { event: events.refreshFrozenColumns, handler: this.refreshFrozenColumns },\n { event: events.setReorderDestinationElement, handler: this.setReorderElement },\n { event: events.columnVisibilityChanged, handler: this.setVisible }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n ColumnFreezeHeaderRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ColumnFreezeHeaderRenderer.prototype.setReorderElement = function (args) {\n this.destEle = args.ele;\n };\n ColumnFreezeHeaderRenderer.prototype.refreshFrozenColumns = function (args) {\n if (!args.parent) {\n this.parent.setProperties({ columns: args.columns }, true);\n }\n var isFrozenLeft = parentsUntil(this.destEle, 'e-frozen-left-header');\n var isFrozenRight = parentsUntil(this.destEle, 'e-frozen-right-header');\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n args.column.freeze = null;\n if (isFrozenLeft) {\n args.column.freeze = 'Left';\n }\n else if (isFrozenRight) {\n args.column.freeze = 'Right';\n }\n this.parent.setFrozenCount();\n args.cancel = left !== this.parent.getFrozenLeftColumnsCount() || right !== this.parent.getFrozenRightColumnsCount();\n if (args.cancel) {\n this.parent.refreshColumns();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.setWrapHeight = function (fRows, mRows, isModeChg, isContReset, isStackedHdr, frRows) {\n var fRowHgt;\n var mRowHgt;\n var frRowHgt;\n var isWrap = this.parent.allowTextWrap;\n var tBody = this.parent.getHeaderContent().querySelector(literals.tbody);\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n var tHead = this.parent.getHeaderContent().querySelector('thead');\n var height = [];\n var width = [];\n var rightHeight = [];\n for (var i = 0, len = fRows.length; i < len; i++) { //separate loop for performance issue\n if (!isNullOrUndefined(fRows[parseInt(i.toString(), 10)]) && !isNullOrUndefined(mRows[parseInt(i.toString(), 10)])) {\n if (frRows) {\n rightHeight[parseInt(i.toString(), 10)] = frRows[parseInt(i.toString(), 10)].getBoundingClientRect().height;\n }\n width[parseInt(i.toString(), 10)] = mRows[parseInt(i.toString(), 10)].getBoundingClientRect().height;\n height[parseInt(i.toString(), 10)] = fRows[parseInt(i.toString(), 10)].getBoundingClientRect().height; //https://pagebuildersandwich.com/increased-plugins-performance-200/\n }\n }\n for (var i = 0, len = fRows.length; i < len; i++) {\n if (isModeChg && (((wrapMode === 'Content' && tHead.contains(fRows[parseInt(i.toString(), 10)]))\n || (wrapMode === 'Header' && tBody.contains(fRows[parseInt(i.toString(), 10)]))) || (wrapMode === 'Header' && isContReset)) || isStackedHdr) {\n if (!isNullOrUndefined(frRows) && frRows[parseInt(i.toString(), 10)]) {\n frRows[parseInt(i.toString(), 10)].style.height = null;\n }\n fRows[parseInt(i.toString(), 10)].style.height = null;\n mRows[parseInt(i.toString(), 10)].style.height = null;\n }\n fRowHgt = height[parseInt(i.toString(), 10)];\n mRowHgt = width[parseInt(i.toString(), 10)];\n frRowHgt = rightHeight[parseInt(i.toString(), 10)] ? rightHeight[parseInt(i.toString(), 10)] : 0;\n var maxHeight = Math.max(fRowHgt, mRowHgt, frRowHgt);\n if (!isNullOrUndefined(fRows[parseInt(i.toString(), 10)]) && fRows[parseInt(i.toString(), 10)].childElementCount\n && ((isWrap && fRowHgt < maxHeight) || (!isWrap && fRowHgt < maxHeight) || (this.parent.allowResizing\n && this.parent.resizeModule && this.parent.resizeModule.isFrozenColResized === false))) {\n fRows[parseInt(i.toString(), 10)].style.height = maxHeight + 'px';\n }\n if (mRows && !isNullOrUndefined(mRows[parseInt(i.toString(), 10)]) && mRows[parseInt(i.toString(), 10)].childElementCount\n && ((isWrap && maxHeight > mRowHgt) || (!isWrap && maxHeight > mRowHgt) || (this.parent.allowResizing\n && this.parent.resizeModule && this.parent.resizeModule.isFrozenColResized === true))) {\n mRows[parseInt(i.toString(), 10)].style.height = maxHeight + 'px';\n }\n if (frRows && !isNullOrUndefined(frRows[parseInt(i.toString(), 10)]) && frRows[parseInt(i.toString(), 10)].childElementCount\n && ((isWrap && maxHeight > frRowHgt) || (!isWrap && maxHeight > frRowHgt) || (this.parent.allowResizing\n && this.parent.resizeModule && this.parent.resizeModule.isFrozenColResized === true))) {\n frRows[parseInt(i.toString(), 10)].style.height = maxHeight + 'px';\n }\n }\n if (isWrap) {\n this.setFrozenHeight();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.refreshHeight = function (obj) {\n var isLeftRight = this.parent.getFrozenMode() === literals.leftRight;\n var fRows;\n var frRows;\n var mRows;\n var frHdr = this.getFrozenRightHeader();\n var fHdr = this.parent.getHeaderContent().querySelector('.' + literals.frozenHeader);\n var cont = this.parent.getContent();\n var mHdr = this.getMovableHeader();\n var hdrClassList = this.parent.getHeaderContent().querySelector('.' + literals.headerContent).classList;\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n if (obj.case === 'textwrap') {\n if (wrapMode !== 'Header' || obj.isModeChg) {\n if (isLeftRight) {\n frRows = cont.querySelector('.e-frozen-right-content').querySelectorAll('tr');\n }\n mRows = cont.querySelector('.' + literals.movableContent).querySelectorAll('tr');\n fRows = cont.querySelector('.' + literals.frozenContent).querySelectorAll('tr');\n this.setWrapHeight(fRows, mRows, obj.isModeChg, true, false, frRows);\n }\n if (wrapMode === 'Content' && this.parent.allowTextWrap) {\n hdrClassList.add('e-wrap');\n }\n else {\n hdrClassList.remove('e-wrap');\n }\n if (wrapMode === 'Both' || obj.isModeChg) {\n if (isLeftRight) {\n frRows = frHdr.querySelectorAll('tr');\n }\n fRows = fHdr.querySelectorAll('tr');\n mRows = mHdr.querySelectorAll('tr');\n }\n else {\n if (isLeftRight) {\n frRows = frHdr.querySelector(wrapMode === 'Content' ?\n literals.tbody : 'thead').querySelectorAll('tr');\n }\n fRows = fHdr.querySelector(wrapMode === 'Content' ?\n literals.tbody : 'thead').querySelectorAll('tr');\n mRows = mHdr.querySelector(wrapMode === 'Content' ?\n literals.tbody : 'thead').querySelectorAll('tr');\n }\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, this.colDepth > 1, frRows);\n }\n this.refreshStackedHdrHgt();\n }\n else if (obj.case === 'refreshHeight') {\n mRows = cont.querySelector('.' + literals.movableContent).querySelectorAll('tr');\n fRows = cont.querySelector('.' + literals.frozenContent).querySelectorAll('tr');\n if (isLeftRight) {\n frRows = cont.querySelector('.e-frozen-right-content').querySelectorAll('tr');\n }\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, false, frRows);\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n if (isLeftRight) {\n frRows = frHdr.querySelectorAll('tr');\n }\n fRows = fHdr.querySelectorAll('tr');\n mRows = mHdr.querySelectorAll('tr');\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, false, frRows);\n }\n }\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column[]\n * @returns {void}\n */\n ColumnFreezeHeaderRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (column.freeze === 'Left' || column.freeze === 'Right') {\n if (left && !right) {\n var leftColGrp = gObj.getHeaderContent().querySelector('.e-frozen-left-header').querySelector(literals.colGroup);\n setStyleAttribute(leftColGrp.children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n else if (!left && right) {\n var rightColGrp = gObj.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.colGroup);\n setStyleAttribute(rightColGrp.children[idx - movable], { 'display': displayVal });\n }\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup);\n setStyleAttribute(mTblColGrp.children[idx - left], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n ColumnFreezeHeaderRenderer.prototype.filterRenderer = function (ele, frozenColumn, total) {\n return _super.prototype.filterRenderer.call(this, ele, frozenColumn, total);\n };\n ColumnFreezeHeaderRenderer.prototype.refreshUI = function () {\n var frTbody;\n var tbody = this.getMovableHeader().querySelector(literals.tbody);\n remove(this.getMovableHeader().querySelector('table'));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frTbody = this.getFrozenRightHeader().querySelector(literals.tbody);\n remove(this.getFrozenRightHeader().querySelector('table'));\n }\n _super.prototype.refreshFrozenLeftUI.call(this);\n this.rfshMovable();\n this.getMovableHeader().querySelector(literals.tbody).innerHTML = tbody.innerHTML;\n if (frTbody) {\n this.getFrozenRightHeader().querySelector(literals.tbody).innerHTML = frTbody.innerHTML;\n }\n this.updateColgroup();\n this.widthService.setWidthToColumns();\n this.parent.notify(events.colGroupRefresh, {});\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap([].slice.call(this.getMovableHeader().querySelectorAll('tr.e-columnheader')), true);\n }\n this.parent.updateDefaultCursor();\n var mTbl = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector('.' + literals.table);\n remove(mTbl.querySelector(literals.colGroup));\n var mColGroup = (this.getMovableHeader().querySelector(literals.colGroup).cloneNode(true));\n mTbl.insertBefore(mColGroup, mTbl.querySelector(literals.tbody));\n if (frTbody) {\n var frtbl = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.' + literals.table);\n remove(frtbl.querySelector(literals.colGroup));\n var frtblColGroup = (this.getFrozenRightHeader().querySelector(literals.colGroup).cloneNode(true));\n frtbl.insertBefore(frtblColGroup, frtbl.querySelector(literals.tbody));\n this.getFrozenRightHeader().querySelector('table').style.width = frtbl.style.width;\n }\n this.widthService.refreshFrozenScrollbar();\n this.initializeHeaderDrag();\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n ColumnFreezeHeaderRenderer.prototype.refreshFreeze = function (obj) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n if (obj.case === 'filter') {\n var filterRow = this.getTable().querySelector('.e-filterbar');\n if (this.parent.allowFiltering && filterRow && this.getMovableHeader().querySelector('thead')) {\n var isDraggable = this.parent.isRowDragable();\n var index = left ? isDraggable ? left + 1 : left : 0;\n var total = left + movable + (left && isDraggable ? 1 : 0);\n this.getMovableHeader().querySelector('thead')\n .appendChild(this.filterRenderer(filterRow, index, total));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var ele = [].slice.call(this.getMovableHeader().\n querySelectorAll('thead .e-filterbarcell .e-input'));\n this.getFrozenRightHeader().querySelector('thead').appendChild(this.filterRenderer(filterRow, index, index + right));\n this.adjudtFilterBarCell(ele);\n }\n var elements = [].slice.call(this.getMovableHeader().\n querySelectorAll('thead .e-filterbarcell .e-input'));\n this.adjudtFilterBarCell(elements);\n }\n }\n else if (obj.case === 'textwrap' || obj.case === 'refreshHeight') {\n this.refreshHeight(obj);\n this.parent.contentModule.refreshScrollOffset();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.updateFrozenColGroup = function (cols, colGroup) {\n if (cols && cols.visible === false) {\n setStyleAttribute(colGroup, { 'display': 'none' });\n }\n };\n ColumnFreezeHeaderRenderer.prototype.adjudtFilterBarCell = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n var args = {\n element: elem, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true\n }\n };\n Input.bindInitialEvent(args);\n }\n };\n ColumnFreezeHeaderRenderer.prototype.renderPanel = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderPanel.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderLeftWithRightFrozenPanel();\n }\n }\n else {\n this.renderRightFrozenPanelAlone();\n }\n this.getPanel().firstChild.style.display = 'flex';\n this.getMovableHeader().style.flex = '1';\n };\n ColumnFreezeHeaderRenderer.prototype.renderTable = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderTable.call(this);\n }\n else {\n this.renderFrozenRightTableAlone();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.rfshMovable = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.rfshMovable.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n var rows = this.rows;\n this.getFrozenRightHeader().appendChild(this.createHeader(undefined, 'frozen-right'));\n this.refreshStackedHdrHgt();\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { renderFrozenRightContent: true } });\n this.rows = rows;\n }\n }\n else {\n this.getFrozenRightHeader().appendChild(this.getTable());\n this.getMovableHeader().appendChild(this.createHeader(undefined, 'movable'));\n this.refreshStackedHdrHgt();\n this.addMovableFirstCls();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.refreshStackedHdrHgt = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.refreshStackedHdrHgt.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.refreshFrozenRightStackedHdrHgt();\n }\n }\n else {\n this.refreshFrozenRightStackedHdrHgt();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.refreshFrozenRightStackedHdrHgt = function () {\n var fRowSpan;\n var frTr = [].slice.call(this.getFrozenRightHeader().getElementsByClassName('e-columnheader'));\n var mTr = [].slice.call(this.getMovableHeader().getElementsByClassName('e-columnheader'));\n for (var i = 0, len = frTr.length; i < len; i++) {\n fRowSpan = this.getRowSpan(frTr[parseInt(i.toString(), 10)]);\n if (fRowSpan.min > 1) {\n this.updateStackedHdrRowHgt(i, fRowSpan.max, frTr[parseInt(i.toString(), 10)], mTr);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnFreezeHeaderRenderer.prototype.updateColgroup = function () {\n this.updateMovableColGroup();\n if (this.parent.getFrozenLeftColumnsCount()) {\n this.updateFrozenLeftColGroup();\n }\n if (this.parent.getFrozenRightColumnsCount()) {\n this.updateFrozenRightColGroup();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.renderRightFrozenPanelAlone = function () {\n var mDiv = this.parent.element.querySelector('.' + literals.movableHeader);\n var fRightDiv = this.parent.element.querySelector('.e-frozen-right-header');\n _super.prototype.renderFrozenRightPanel.call(this);\n if (isNullOrUndefined(fRightDiv)) {\n mDiv = this.parent.createElement('div', { className: literals.movableHeader });\n fRightDiv = this.parent.createElement('div', { className: 'e-frozenheader e-frozen-right-header' });\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(mDiv);\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(fRightDiv);\n }\n _super.prototype.setMovableHeader.call(this, mDiv);\n this.setFrozenRightHeader(fRightDiv);\n };\n ColumnFreezeHeaderRenderer.prototype.renderLeftWithRightFrozenPanel = function () {\n var fRightDiv = this.parent.element.querySelector('.e-frozen-right-header');\n _super.prototype.renderFrozenRightPanel.call(this);\n if (isNullOrUndefined(fRightDiv)) {\n fRightDiv = this.parent.createElement('div', { className: 'e-frozenheader e-frozen-right-header' });\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(fRightDiv);\n }\n this.setFrozenRightHeader(fRightDiv);\n };\n ColumnFreezeHeaderRenderer.prototype.renderFrozenRightTableAlone = function () {\n _super.prototype.renderFrozenRightTable.call(this);\n this.rfshMovable();\n this.updateColgroup();\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n ColumnFreezeHeaderRenderer.prototype.updateFrozenLeftColGroup = function () {\n var leftColGroup = this.getFrozenHeader().querySelector(literals.colGroup).children;\n var start = this.parent.isRowDragable() ? 1 : 0;\n var count = this.parent.isRowDragable() ? this.parent.getFrozenLeftColumnsCount() + 1\n : this.parent.getFrozenLeftColumnsCount();\n for (var i = start; i < leftColGroup.length; i++) {\n if (i >= count) {\n remove(leftColGroup[parseInt(i.toString(), 10)]);\n i--;\n }\n }\n };\n ColumnFreezeHeaderRenderer.prototype.updateMovableColGroup = function () {\n var movableColGroup = this.getMovableHeader().querySelector(literals.colGroup).children;\n if (this.parent.isRowDragable()) {\n remove(movableColGroup[0]);\n }\n var length = movableColGroup.length;\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n var k = 0;\n for (var i = 0; i < length; i++, k++) {\n if (i < left || i >= left + movable) {\n remove(movableColGroup[parseInt(k.toString(), 10)]);\n k--;\n }\n }\n };\n ColumnFreezeHeaderRenderer.prototype.updateFrozenRightColGroup = function () {\n var isDraggable = this.parent.isRowDragable();\n var rightColumns = this.parent.getFrozenRightColumns();\n var rightColGroup = this.getFrozenRightHeader().querySelector(literals.colGroup).children;\n if (this.parent.getFrozenMode() === literals.leftRight && isDraggable) {\n remove(rightColGroup[0]);\n }\n var length = rightColGroup.length;\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n var k = 0;\n for (var i = 0; i < length; i++) {\n if (i < left + movable) {\n remove(rightColGroup[0]);\n }\n else {\n this.updateFrozenColGroup(rightColumns[parseInt(k.toString(), 10)], rightColGroup[parseInt(k.toString(), 10)]);\n k++;\n }\n }\n };\n ColumnFreezeHeaderRenderer.prototype.setFrozenRightHeader = function (ele) {\n this.frozenRightHeader = ele;\n };\n ColumnFreezeHeaderRenderer.prototype.getFrozenRightHeader = function () {\n return this.frozenRightHeader;\n };\n return ColumnFreezeHeaderRenderer;\n}(FreezeRender));\nexport { ColumnFreezeHeaderRenderer };\n/**\n * ColumnFreezeContentRenderer is used to freeze the columns content at right and left\n *\n * @hidden\n */\nvar ColumnFreezeContentRenderer = /** @class */ (function (_super) {\n __extends(ColumnFreezeContentRenderer, _super);\n function ColumnFreezeContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.frzCount = 0;\n _this.isColGroupRefresh = false;\n _this.widthService = locator.getService('widthService');\n return _this;\n }\n ColumnFreezeContentRenderer.prototype.renderPanel = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderPanel.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderFrozenLeftWithRightPanel();\n }\n }\n else {\n this.renderFrozenRightPanelAlone();\n }\n var display = this.parent.enableVirtualization ? '' : 'flex';\n this.getPanel().firstChild.style.display = display;\n };\n ColumnFreezeContentRenderer.prototype.renderTable = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderTable.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderFrozenLeftWithRightTable();\n var display = !this.parent.getVisibleFrozenRightCount() ? 'none' : '';\n this.renderHorizontalScrollbar('e-frozenscrollbar e-frozen-right-scrollbar', display, true);\n }\n }\n else {\n this.renderFrozenRightTableAlone();\n var display = !this.parent.getVisibleFrozenRightCount() ? 'none' : '';\n this.renderHorizontalScrollbar('e-frozenscrollbar e-frozen-right-scrollbar', display);\n }\n this.getMovableContent().style.flex = '1';\n };\n ColumnFreezeContentRenderer.prototype.appendScrollbar = function (frozen, movable, isRight) {\n var parent = this.parent.createElement('div', { className: 'e-scrollbar', styles: 'display: flex' });\n if (this.parent.getFrozenLeftColumnsCount()) {\n if (!isRight) {\n parent.appendChild(frozen);\n parent.appendChild(movable);\n }\n else {\n this.parent.getContent().querySelector('.e-scrollbar').appendChild(frozen);\n return;\n }\n }\n else {\n parent.appendChild(movable);\n parent.appendChild(frozen);\n }\n this.parent.getContent().appendChild(parent);\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenRightPanelAlone = function () {\n this.renderFrozenRigthPanel();\n var mDiv = this.parent.element.querySelector('.' + literals.movableContent);\n var fRightContent = this.parent.element.querySelector('.e-frozen-right-content');\n if (isNullOrUndefined(fRightContent)) {\n mDiv = this.parent.createElement('div', { className: literals.movableContent });\n fRightContent = this.parent.createElement('div', { className: 'e-frozencontent e-frozen-right-content' });\n this.getPanel().querySelector('.' + literals.content).appendChild(mDiv);\n this.getPanel().querySelector('.' + literals.content).appendChild(fRightContent);\n }\n _super.prototype.setMovableContent.call(this, mDiv);\n this.setFrozenRightContent(fRightContent);\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenLeftWithRightPanel = function () {\n this.renderFrozenRigthPanel();\n var fRightContent = this.parent.element.querySelector('.e-frozen-right-content');\n if (isNullOrUndefined(fRightContent)) {\n fRightContent = this.parent.createElement('div', { className: 'e-frozencontent e-frozen-right-content' });\n this.getPanel().querySelector('.' + literals.content).appendChild(fRightContent);\n }\n this.setFrozenRightContent(fRightContent);\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenRightTableAlone = function () {\n var mTbl;\n if (this.getFrozenRightContent().querySelector('.' + literals.table) == null) {\n _super.prototype.renderFrozenRightTable.call(this);\n this.getFrozenRightContent().appendChild(this.getTable());\n mTbl = this.getTable().cloneNode(true);\n this.getMovableContent().appendChild(mTbl);\n }\n else {\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n this.setTable(this.getFrozenRightContent().querySelector('.' + literals.table));\n this.setColGroup(this.getFrozenRightHeaderColGroup());\n mTbl = this.getMovableContent().querySelector('.' + literals.table);\n this.getFrozenRightContent().querySelector('.' + literals.table).appendChild(this.getColGroup());\n }\n if (this.getMovableContent().querySelector(literals.colGroup)) {\n remove(this.getMovableContent().querySelector(literals.colGroup));\n }\n var colgroup = ((this.parent.getHeaderContent().querySelector('.' + literals.movableHeader)\n .querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colgroup, mTbl.querySelector(literals.tbody));\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenLeftWithRightTable = function () {\n var frozenRight = this.getTable().cloneNode(true);\n this.getFrozenRightContent().appendChild(frozenRight);\n var oldColGroup = this.getFrozenRightContent().querySelector(literals.colGroup);\n if (oldColGroup) {\n remove(oldColGroup);\n }\n var rightTable = this.getFrozenRightContent().querySelector('.' + literals.table);\n rightTable.insertBefore(this.getFrozenRightHeaderColGroup(), rightTable.querySelector(literals.tbody));\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenRightEmptyRowAlone = function (tbody) {\n _super.prototype.renderFrozenRightEmpty.call(this, tbody);\n this.getMovableContent().querySelector(literals.tbody).innerHTML = '';\n addClass([this.parent.getMovableContentTbody().querySelector('tr')], ['e-emptyrow']);\n this.getFrozenRightContent().querySelector('.e-emptyrow').querySelector('td').colSpan = this.parent.getVisibleFrozenRightCount();\n if (this.parent.frozenRows) {\n this.parent.getFrozenRightHeaderTbody().innerHTML = '';\n this.parent.getMovableHeaderTbody().innerHTML = '';\n }\n };\n /**\n * @param {string} tableName - specfies the table name\n * @returns {HTMLElement} returns the element\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.getFrozenHeader = function (tableName) {\n if (tableName === literals.frozenLeft) {\n return this.parent.getHeaderContent().querySelector('.e-frozen-left-header').querySelector(literals.tbody);\n }\n else if (tableName === 'movable') {\n return this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n else {\n return this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody);\n }\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenLeftWithRightEmptyRow = function () {\n this.getFrozenRightContent().querySelector(literals.tbody).innerHTML = '';\n addClass([this.getFrozenRightContent().querySelector(literals.tbody).querySelector('tr')], ['e-emptyrow']);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody).innerHTML = '';\n }\n };\n ColumnFreezeContentRenderer.prototype.setFrozenRightContent = function (ele) {\n this.frozenRigthContent = ele;\n };\n ColumnFreezeContentRenderer.prototype.getFrozenRightContent = function () {\n return this.frozenRigthContent;\n };\n ColumnFreezeContentRenderer.prototype.getHeaderColGroup = function () {\n var colGroup = this.parent.element.querySelector('.' + literals.gridHeader).querySelector(literals.colGroup).cloneNode(true);\n if (!this.parent.getFrozenLeftColumnsCount()) {\n var right = this.getFrozenRightHeaderColGroup();\n colGroup = right && this.frzCount ? right.cloneNode(true) : colGroup;\n this.frzCount++;\n this.isColGroupRefresh = true;\n }\n return colGroup;\n };\n ColumnFreezeContentRenderer.prototype.getFrozenRightHeaderColGroup = function () {\n var col = this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.colGroup);\n if (!col) {\n col = this.parent.getHeaderContent().querySelector(literals.colGroup);\n }\n return col.cloneNode(true);\n };\n ColumnFreezeContentRenderer.prototype.setColGroup = function (colGroup) {\n if (this.parent.getFrozenLeftColumnsCount()) {\n return _super.prototype.setColGroup.call(this, colGroup);\n }\n else {\n colGroup = !this.isColGroupRefresh ? this.getFrozenRightHeaderColGroup() : colGroup;\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n this.isColGroupRefresh = false;\n if (this.frzCount === 2) {\n this.frzCount = 0;\n }\n return this.colgroup = colGroup;\n }\n };\n ColumnFreezeContentRenderer.prototype.renderEmpty = function (tbody) {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderEmpty.call(this, tbody);\n this.getFrozenContent().querySelector('.e-emptyrow').querySelector('td').colSpan = this.parent.getVisibleFrozenLeftCount();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderFrozenLeftWithRightEmptyRow();\n }\n }\n else {\n this.renderFrozenRightEmptyRowAlone(tbody);\n }\n this.parent.notify(events.freezeRender, { case: 'refreshHeight' });\n };\n ColumnFreezeContentRenderer.prototype.setHeightToContent = function (height) {\n if (this.parent.getFrozenRightColumnsCount()) {\n this.getFrozenRightContent().style.height = height.toString() + 'px';\n }\n if (this.parent.getFrozenLeftColumnsCount()) {\n this.getFrozenContent().style.height = height.toString() + 'px';\n }\n this.getMovableContent().style.height = height.toString() + 'px';\n };\n ColumnFreezeContentRenderer.prototype.actionComplete = function (args) {\n _super.prototype.actionComplete.call(this, args);\n };\n ColumnFreezeContentRenderer.prototype.batchAdd = function (args) {\n _super.prototype.batchAdd.call(this, args);\n };\n /**\n * @param {freezeTable} tableName - specfies the table name\n * @returns {Element} - returns the element\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.getTbody = function (tableName) {\n var tbody;\n if (tableName === literals.frozenLeft) {\n tbody = this.parent.getFrozenLeftContentTbody();\n }\n else if (tableName === 'movable') {\n tbody = this.parent.getMovableContentTbody();\n }\n else if (tableName === literals.frozenRight) {\n tbody = this.parent.getFrozenRightContentTbody();\n }\n return tbody;\n };\n /**\n * @param {NotifyArgs} args - specfies the args\n * @param {freezeTable} tableName - specfies the freeze table\n * @returns {void}\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.setIsFrozen = function (args, tableName) {\n args.isFrozen = (tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right'\n && tableName === literals.frozenRight));\n args.renderFrozenRightContent = this.parent.getFrozenMode() === literals.leftRight && tableName === literals.frozenRight;\n args.renderMovableContent = tableName === 'movable';\n };\n /**\n * @param {Element} tbody - specfies the element\n * @param {DocumentFragment | HTMLElement} frag - specfies the frag\n * @param {NotifyArgs} args - specfies the args\n * @param {freezeTable} tableName - specfies the tableName\n * @returns {void}\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.appendContent = function (tbody, frag, args, tableName) {\n if (!isNullOrUndefined(this.parent.rowTemplate) && this.parent.isReact) {\n tbody = frag;\n }\n else {\n tbody.appendChild(frag);\n }\n if (this.parent.getFrozenMode() === 'Left') {\n if (tableName === literals.frozenLeft) {\n this.isLoaded = false;\n this.getFrozenContent().querySelector('table').appendChild(tbody);\n this.refreshContentRows(extend({}, args));\n }\n else {\n this.refreshTbody(tbody);\n this.isLoaded = true;\n this.getMovableContent().querySelector('table').appendChild(tbody);\n this.refreshHeight();\n this.refreshScrollOffset();\n }\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n if (tableName === 'movable') {\n this.refreshTbody(tbody);\n this.isLoaded = true;\n this.getMovableContent().querySelector('table').appendChild(tbody);\n this.refreshHeight();\n this.refreshScrollOffset();\n }\n else {\n this.isLoaded = false;\n this.getFrozenRightContent().querySelector('table').appendChild(tbody);\n this.refreshContentRows(extend({}, args));\n }\n }\n else if (this.parent.getFrozenMode() === literals.leftRight) {\n if (tableName === literals.frozenLeft) {\n this.isLoaded = false;\n this.getFrozenContent().querySelector('table').appendChild(tbody);\n this.refreshContentRows(extend({}, args));\n }\n else if (tableName === 'movable') {\n this.refreshTbody(tbody);\n this.isLoaded = false;\n this.getMovableContent().querySelector('table').appendChild(tbody);\n this.refreshContentRows(extend({}, args));\n }\n else {\n this.isLoaded = true;\n this.getFrozenRightContent().querySelector('table').appendChild(tbody);\n this.refreshHeight();\n this.refreshScrollOffset();\n }\n }\n if (this.isInitialRender) {\n this.parent.scrollModule.setHeight();\n this.isInitialRender = false;\n }\n this.widthService.refreshFrozenScrollbar();\n };\n ColumnFreezeContentRenderer.prototype.refreshHeight = function () {\n if (!this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight' });\n }\n };\n /**\n * @param {freezeTable} tableName - specifies the table\n * @returns {void}\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.splitRows = function (tableName) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (left && !right) {\n if (tableName === literals.frozenLeft) {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n else {\n this.movableRows = this.rows;\n }\n }\n else if (!left && right) {\n if (tableName === 'movable') {\n this.movableRows = this.rows;\n }\n else {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n }\n else if (left && right) {\n if (tableName === literals.frozenLeft) {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n else if (tableName === 'movable') {\n this.movableRows = this.rows;\n this.movableRowElements = this.rowElements;\n }\n else {\n this.frozenRightRows = this.rows;\n this.frozenRightRowElements = this.rowElements;\n }\n }\n };\n /**\n * Get the Freeze pane movable content table data row elements\n *\n * @returns {Element} returns the element\n */\n ColumnFreezeContentRenderer.prototype.getMovableRowElements = function () {\n if (this.parent.getFrozenMode() !== literals.leftRight) {\n return this.rowElements;\n }\n else {\n return this.movableRowElements;\n }\n };\n /**\n * Get the Freeze pane frozen right content table data row elements\n *\n * @returns {Element} returns the Element\n */\n ColumnFreezeContentRenderer.prototype.getFrozenRightRowElements = function () {\n if (this.parent.getFrozenMode() !== literals.leftRight) {\n return this.freezeRowElements;\n }\n else {\n return this.frozenRightRowElements;\n }\n };\n /**\n * Get the frozen right row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row object\n */\n ColumnFreezeContentRenderer.prototype.getFrozenRightRows = function () {\n if (this.parent.getFrozenMode() === literals.leftRight) {\n if (this.parent.enableInfiniteScrolling) {\n return this.rightFreezeRows;\n }\n return this.frozenRightRows;\n }\n else {\n return this.getRows();\n }\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.getFrozenRightRowByIndex = function (index) {\n return !isNullOrUndefined(index) ? this.parent.getFrozenRightDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n /**\n * Get the Row collection in the Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row object\n */\n ColumnFreezeContentRenderer.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.freezeRows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ColumnFreezeContentRenderer.prototype.getRowElements = function () {\n return this.freezeRowElements;\n };\n return ColumnFreezeContentRenderer;\n}(FreezeContentRender));\nexport { ColumnFreezeContentRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { isEditable, getObject } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `ComboBoxEditCell` is used to handle ComboBoxEdit cell type editing.\n *\n * @hidden\n */\nvar ComboboxEditCell = /** @class */ (function (_super) {\n __extends(ComboboxEditCell, _super);\n function ComboboxEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComboboxEditCell.prototype.write = function (args) {\n this.column = args.column;\n var isInlineMode = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new ComboBox(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().select(args.column.field),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl, actionComplete: this.finalValue.bind(this),\n placeholder: isInlineMode ? '' : args.column.headerText,\n floatLabelType: isInlineMode ? 'Never' : 'Always',\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n };\n ComboboxEditCell.prototype.finalValue = function (val) {\n val.result = DataUtil.distinct(val.result, this.obj.fields.value, true);\n if (this.column.dataSource) {\n this.column.dataSource.dataSource.json = val.result;\n }\n };\n return ComboboxEditCell;\n}(EditCellBase));\nexport { ComboboxEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { addClass, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren } from '../base/util';\nimport { destroy, commandColumnDestroy } from '../base/constant';\n/**\n * `CommandColumn` used to render command column in grid\n *\n * @hidden\n */\nvar CommandColumnRenderer = /** @class */ (function (_super) {\n __extends(CommandColumnRenderer, _super);\n function CommandColumnRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.buttonElement = _this.parent.createElement('button', {});\n _this.unbounDiv = _this.parent.createElement('div', { className: 'e-unboundcelldiv', styles: 'display: inline-block' });\n _this.childRefs = [];\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowcell e-unboundcell', attrs: {\n tabindex: '-1'\n }\n });\n _this.parent.on(destroy, _this.destroyButtons, _this);\n _this.parent.on(commandColumnDestroy, _this.destroyButtons, _this);\n return _this;\n }\n CommandColumnRenderer.prototype.destroyButtons = function (args) {\n for (var i = 0; i < this.childRefs.length; i++) {\n if (this.childRefs[parseInt(i.toString(), 10)] && !this.childRefs[parseInt(i.toString(), 10)].isDestroyed) {\n this.childRefs[parseInt(i.toString(), 10)].destroy();\n if (this.childRefs[parseInt(i.toString(), 10)].element) {\n this.childRefs[parseInt(i.toString(), 10)].element.innerHTML = '';\n }\n }\n }\n this.childRefs = [];\n if (args.type === 'refreshCommandColumn') {\n var elem = this.parent.element.querySelectorAll('.e-unboundcell');\n if (elem.length) {\n for (var i = 0; i < elem.length; i++) {\n if (elem[parseInt(i.toString(), 10)]) {\n if (elem[parseInt(i.toString(), 10)].querySelector('.e-unboundcelldiv')) {\n elem[parseInt(i.toString(), 10)].querySelector('.e-unboundcelldiv').innerHTML = '';\n }\n elem[parseInt(i.toString(), 10)].innerHTML = '';\n }\n }\n elem = null;\n }\n }\n else {\n this.parent.off(destroy, this.destroyButtons);\n this.parent.off(commandColumnDestroy, this.destroyButtons);\n }\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isVirtualEdit - specifies virtual scroll editing\n * @returns {Element} returns the element\n */\n CommandColumnRenderer.prototype.render = function (cell, data, attributes, isVirtualEdit) {\n var node = this.element.cloneNode();\n var uid = 'uid';\n node.appendChild(this.unbounDiv.cloneNode());\n node.setAttribute('aria-label', this.localizer.getConstant('CommandColumnAria') + cell.column.headerText);\n if (cell.column.commandsTemplate) {\n if (this.parent.isReact && typeof (cell.column.commandsTemplate) !== 'string') {\n var tempID = this.parent + 'commandsTemplate';\n cell.column.getColumnTemplate()(data, this.parent, 'commandsTemplate', tempID, null, null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node.firstElementChild, cell.column.getColumnTemplate()(data));\n }\n }\n else {\n for (var _i = 0, _a = cell.commands; _i < _a.length; _i++) {\n var command = _a[_i];\n node = this.renderButton(node, command, attributes.index, command[\"\" + uid]);\n }\n }\n this.setAttributes(node, cell, attributes);\n if ((!this.parent.enableVirtualization && this.parent.isEdit) || isVirtualEdit) {\n addClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n }\n else {\n addClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n }\n return node;\n };\n CommandColumnRenderer.prototype.renderButton = function (node, buttonOption, index, uid) {\n var button = this.buttonElement.cloneNode();\n attributes(button, {\n 'id': this.parent.element.id + (buttonOption.type || '') + '_' + index + '_' + uid, 'type': 'button',\n title: !isNullOrUndefined(buttonOption.title) ? buttonOption.title :\n buttonOption.buttonOption.content || this.localizer.getConstant(buttonOption.type) || buttonOption.type,\n 'data-uid': uid\n });\n button.onclick = buttonOption.buttonOption.click;\n buttonOption.buttonOption.cssClass = this.parent.cssClass ?\n buttonOption.buttonOption.cssClass + ' ' + this.parent.cssClass : buttonOption.buttonOption.cssClass;\n var buttonObj = new Button(buttonOption.buttonOption, button);\n this.childRefs.push(buttonObj);\n buttonObj.commandType = buttonOption.type;\n node.firstElementChild.appendChild(buttonObj.element);\n switch (buttonOption.type) {\n case 'Edit':\n case 'Delete':\n addClass([button], ['e-edit-delete', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n case 'Cancel':\n case 'Save':\n addClass([button], ['e-save-cancel', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n }\n return node;\n };\n return CommandColumnRenderer;\n}(CellRenderer));\nexport { CommandColumnRenderer };\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.viewColIndexes = [];\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n this.isRemove = false;\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n var tableName = args.tableName;\n _this.isLoaded = _this.parent.getFrozenMode() === literals.leftRight ? tableName === 'frozen-right' : tableName === 'movable';\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().getElementsByClassName(literals.row));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().getElementsByClassName(literals.row));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var fCont = this.getPanel().querySelector('.' + literals.frozenContent);\n var mCont = this.getPanel().querySelector('.' + literals.movableContent);\n var cont = this.getPanel().querySelector('.' + literals.content);\n var tbdy;\n var tableName;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === literals.leftRight && tableName === literals.frozenRight;\n /* eslint-disable */\n if (args.requestType !== 'infiniteScroll' && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector(literals.tbody);\n }\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && !gObj.isFrozenGrid() && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (isFrozenGrid) {\n this_1.tempFreezeRows.push(modelData[parseInt(i.toString(), 10)]);\n }\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)], tableName);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(tr);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.getTable(), {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n this_1.rowElements.push(tr);\n }\n this_1.ariaService.setOptions(this_1.getTable(), { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n if (isFrozenGrid) {\n contentModule.splitRows(tableName);\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n args.rows = this.rows.slice(0);\n if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(contentModule.getTbody(tableName));\n tbdy = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n else {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector(literals.tbody), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector(literals.tbody), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== literals.leftRight\n && (tableName === literals.frozenLeft || tableName === literals.frozenRight))\n || (gObj.getFrozenMode() === literals.leftRight\n && (tableName === literals.frozenLeft || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings\n .currentPage][parseInt(index.toString(), 10)].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][parseInt(index.toString(), 10)];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right' && tableName === literals.frozenRight)) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][parseInt(idx.toString(), 10)]\n .slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = !frozenCols ? rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]) : rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === literals.leftRight) {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row = void 0; i < rowLen; i++) {\n cellLen = mRows[parseInt(i.toString(), 10)].cells.length;\n var rightLen = rightRows.length ? rightRows[parseInt(i.toString(), 10)].cells.length : 0;\n row = fRows[parseInt(i.toString(), 10)].clone();\n for (var j = 0; j < cellLen; j++) {\n row.cells.push(mRows[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)]);\n }\n for (var k = 0; k < rightLen; k++) {\n row.cells.push(rightRows[parseInt(i.toString(), 10)].cells[parseInt(k.toString(), 10)]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === literals.frozenRight) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.colGroup);\n setStyleAttribute(colG.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.' + literals.movableContent).querySelector(literals.colGroup);\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n if (isFrozenGrid) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(events.partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader()\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n }\n else {\n colGroup = this.getHeaderColGroup();\n }\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].isSelected = set;\n }\n }\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getMovableDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","import { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getCustomDateFormat } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.dpOpen = this.openPopup.bind(this);\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n this.datePickerObj.addEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n DateFilterUI.prototype.destroy = function () {\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\nexport { DateFilterUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isEditable, getObject, getCustomDateFormat } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DatePickerEditCell` is used to handle datepicker cell type editing.\n *\n * @hidden\n */\nvar DatePickerEditCell = /** @class */ (function (_super) {\n __extends(DatePickerEditCell, _super);\n function DatePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DatePickerEditCell.prototype.write = function (args) {\n this.edit = this.parent.editModule;\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n this.obj.appendTo(args.element);\n };\n return DatePickerEditCell;\n}(EditCellBase));\nexport { DatePickerEditCell };\n// eslint-disable-next-line\nfunction dateanddatetimerender(args, mode, rtl, css, datePickerEditCell) {\n var isInline = mode !== 'Dialog';\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: css ? css : null,\n close: datePickerClose.bind(datePickerEditCell)\n };\n}\n// eslint-disable-next-line\nfunction datePickerClose(args) {\n if (args.event && args.event.action === 'escape') {\n this.edit.editCellDialogClose = true;\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { isEditable, createEditElement } from '../base/util';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DefaultEditCell` is used to handle default cell type editing.\n *\n * @hidden\n */\nvar DefaultEditCell = /** @class */ (function (_super) {\n __extends(DefaultEditCell, _super);\n function DefaultEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultEditCell.prototype.create = function (args) {\n var attr = {\n type: 'text', value: !isNullOrUndefined(args.value) ? args.value : '', style: 'text-align:' + args.column.textAlign\n };\n return createEditElement(this.parent, args.column, 'e-field e-input e-defaultcell', attr);\n };\n DefaultEditCell.prototype.read = function (element) {\n return element.value;\n };\n DefaultEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new TextBox(extend({\n element: args.element, floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n enableRtl: this.parent.enableRtl, enabled: isEditable(args.column, args.requestType, args.element),\n placeholder: isInline ? '' : args.column.headerText,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, col.edit.params));\n this.obj.appendTo(args.element);\n };\n return DefaultEditCell;\n}(EditCellBase));\nexport { DefaultEditCell };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { remove, extend, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, applyBiggerTheme, addBiggerDialog } from '../base/util';\nimport { ResponsiveDialogRenderer } from './responsive-dialog-renderer';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar DialogEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function DialogEditRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.dialogDestroy, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n DialogEditRender.prototype.setLocaleObj = function () {\n this.l10n = this.serviceLocator.getService('localization');\n };\n DialogEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.createDialogHeader = function (args) {\n var gObj = this.parent;\n var header;\n if (this.parent.enableAdaptiveUI) {\n var responsiveDlgRenderer = new ResponsiveDialogRenderer(this.parent, this.serviceLocator);\n responsiveDlgRenderer.action = this.isEdit ? ResponsiveDialogAction.isEdit : ResponsiveDialogAction.isAdd;\n return responsiveDlgRenderer.renderResponsiveHeader(undefined, args);\n }\n else {\n if (gObj.editSettings.headerTemplate) {\n header = this.getDialogEditTemplateElement('HeaderTemplate', args);\n }\n else if (this.isEdit) {\n header = this.l10n.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else {\n header = this.l10n.getConstant('AddFormTitle');\n }\n }\n return header;\n };\n DialogEditRender.prototype.createDialog = function (elements, args) {\n var gObj = this.parent;\n this.dialog = this.parent.createElement('div', { id: gObj.element.id + '_dialogEdit_wrapper', styles: 'width: auto' });\n if (gObj.enableAdaptiveUI) {\n this.dialog.classList.add('e-responsive-dialog');\n }\n gObj.element.appendChild(this.dialog);\n this.setLocaleObj();\n this.dialog.setAttribute('aria-label', this.l10n.getConstant('DialogEdit'));\n // let position: PositionDataModel = this.parent.element.getBoundingClientRect().height < 400 ?\n // { X: 'center', Y: 'top' } : { X: 'center', Y: 'center' };\n this.dialogObj = new Dialog(extend({\n header: this.createDialogHeader(args), isModal: true, visible: true,\n cssClass: this.parent.cssClass ? 'e-edit-dialog' + ' ' + this.parent.cssClass : 'e-edit-dialog',\n content: this.getEditElement(elements, args),\n showCloseIcon: true,\n allowDragging: true,\n // position: position,\n close: this.dialogClose.bind(this),\n created: this.dialogCreated.bind(this),\n closeOnEscape: true, width: gObj.editSettings.template ? 'auto' : '330px',\n target: args.target ? args.target : document.body, animationSettings: { effect: 'None' },\n footerTemplate: gObj.editSettings.footerTemplate ? this.getDialogEditTemplateElement('FooterTemplate', args) : null,\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('SaveButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n { click: this.btnClick.bind(this),\n buttonModel: {\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton')\n } }]\n }, gObj.editSettings.dialog ? (gObj.editSettings.dialog.params || {}) : {}));\n args.dialog = this.dialogObj;\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dialogObj.appendTo(this.dialog);\n applyBiggerTheme(this.parent.element, this.dialogObj.element.parentElement);\n if (gObj.enableAdaptiveUI) {\n this.dialogObj.show(true);\n }\n };\n DialogEditRender.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n DialogEditRender.prototype.renderResponsiveDialog = function () {\n var _this = this;\n if (this.parent.enableAdaptiveUI) {\n if (this.parent.adaptiveDlgTarget) {\n this.dialogObj.target = this.parent.adaptiveDlgTarget;\n }\n this.dialogObj.buttons = [{}];\n this.dialogObj.showCloseIcon = true;\n this.dialogObj.visible = false;\n this.dialogObj.width = '100%';\n this.dialogObj.open = function () {\n _this.dialogObj.element.style.maxHeight = '100%';\n };\n }\n };\n DialogEditRender.prototype.btnClick = function (e) {\n if (this.l10n.getConstant('CancelButton').toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n this.dialogClose();\n }\n else {\n this.parent.endEdit();\n }\n };\n DialogEditRender.prototype.dialogClose = function () {\n this.parent.closeEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DialogEditRender.prototype.destroy = function (args) {\n var dialogEditTemplates = ['template', 'headerTemplate', 'footerTemplate'];\n for (var i = 0; i < dialogEditTemplates.length; i++) {\n if (this.parent.editSettings[dialogEditTemplates[parseInt(i.toString(), 10)]]) {\n var templateName = dialogEditTemplates[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + dialogEditTemplates[parseInt(i.toString(), 10)].slice(1);\n var editTemplateID = this.parent.element.id + 'editSettings' + templateName;\n updateBlazorTemplate(editTemplateID, templateName, this.parent.editSettings);\n }\n }\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.parent.notify(events.toolbarRefresh, {});\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n };\n DialogEditRender.prototype.getDialogEditTemplateElement = function (dialogTemp, args) {\n var tempDiv = this.parent.createElement('div', { className: 'e-dialog' + dialogTemp });\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var templateID = this.parent.element.id + 'editSettings' + dialogTemp;\n appendChildren(tempDiv, (dialogTemp === 'HeaderTemplate' ? this.parent.getEditHeaderTemplate() :\n this.parent.getEditFooterTemplate())(dummyData, this.parent, 'editSettings' + dialogTemp, templateID));\n updateBlazorTemplate(templateID, dialogTemp, this.parent.editSettings);\n return tempDiv;\n };\n DialogEditRender.prototype.getEditElement = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n var div = this.parent.createElement('div', { className: this.isEdit ? literals.editedRow : 'e-insertedrow' });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var isReactCompiler = this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n var setRules = function () {\n var columns = _this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[columns[parseInt(i.toString(), 10)].field] =\n columns[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n div.appendChild(form);\n return div;\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '6px', role: 'grid' } });\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editModule.checkColumnIsGrouped(cols[parseInt(i.toString(), 10)]) || cols[parseInt(i.toString(), 10)].commands\n || cols[parseInt(i.toString(), 10)].commandsTemplate || cols[parseInt(i.toString(), 10)].type === 'checkbox') {\n continue;\n }\n var tr = this.parent.createElement('tr');\n var dataCell = this.parent.createElement('td', {\n className: literals.rowCell, attrs: {\n style: 'text-align:' + (this.parent.enableRtl ? 'right' : 'left') + ';width:190px'\n }\n });\n elements[cols[parseInt(i.toString(), 10)].uid].classList.remove('e-input');\n dataCell.appendChild(elements[cols[parseInt(i.toString(), 10)].uid]);\n tr.appendChild(dataCell);\n tbody.appendChild(tr);\n }\n table.appendChild(tbody);\n form.appendChild(table);\n div.appendChild(form);\n return div;\n };\n DialogEditRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dialogDestroy, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return DialogEditRender;\n}());\nexport { DialogEditRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, isNullOrUndefined, select } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { Query, DataManager, DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport { isEditable, getComplexFieldID, getObject } from '../base/util';\nimport { parentsUntil } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar DropDownEditCell = /** @class */ (function (_super) {\n __extends(DropDownEditCell, _super);\n function DropDownEditCell(parent) {\n var _this = \n //constructor\n _super.call(this) || this;\n _this.parent = parent;\n _this.flag = false;\n _this.removeEventHandler = _this.removeEventListener;\n return _this;\n }\n DropDownEditCell.prototype.write = function (args) {\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.column = args.column;\n var pred = new Predicate(args.column.field, 'notequal', null, true, false);\n var params = {};\n if (args.column.edit.params) {\n var keys = Object.keys(args.column.edit.params);\n for (var i = 0; i < keys.length; i++) {\n params[keys[parseInt(i.toString(), 10)]] = keys[parseInt(i.toString(), 10)] === 'query' ?\n args.column.edit.params[keys[parseInt(i.toString(), 10)]].clone() :\n args.column.edit.params[keys[parseInt(i.toString(), 10)]];\n }\n }\n this.obj = new DropDownList(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always',\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? this.parent.cssClass : null,\n close: this.dropDownClose.bind(this)\n }, params));\n if (this.parent.enableVirtualization) {\n this.obj.dataSource = args.column.isForeignColumn() ? [args.foreignKeyData[0]] : [args.rowData];\n }\n this.addEventListener();\n this.obj.query.params = this.parent.query.params;\n this.obj.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n DropDownEditCell.prototype.dropDownClose = function (args) {\n if (args.event && args.event.action === 'escape') {\n this.parent.editModule.editCellDialogClose = true;\n }\n };\n DropDownEditCell.prototype.addEventListener = function () {\n this.ddCreated = this.dropdownCreated.bind(this);\n this.ddOpen = this.dropDownOpen.bind(this);\n this.ddBeforeOpen = this.dropdownBeforeOpen.bind(this);\n this.ddComplete = this.ddActionComplete.bind(this);\n this.obj.addEventListener(literals.create, this.ddCreated);\n this.obj.addEventListener(literals['open'], this.ddOpen);\n this.obj.addEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.addEventListener(events.actionComplete, this.ddComplete);\n };\n DropDownEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.create, this.ddCreated);\n this.obj.removeEventListener(literals['open'], this.ddOpen);\n this.obj.removeEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.removeEventListener(events.actionComplete, this.ddComplete);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownEditCell.prototype.dropdownCreated = function (e) {\n this.flag = true;\n };\n DropDownEditCell.prototype.dropdownBeforeOpen = function () {\n if (this.parent.enableVirtualization) {\n this.obj.dataSource = !this.column.isForeignColumn() ? (this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource))\n : this.column.dataSource instanceof DataManager ?\n this.column.dataSource : new DataManager(this.column.dataSource);\n }\n };\n DropDownEditCell.prototype.ddActionComplete = function (e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource && !(this.column.edit.params &&\n this.column.edit.params.ddEditedData)) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n };\n DropDownEditCell.prototype.dropDownOpen = function (args) {\n var dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n };\n return DropDownEditCell;\n}(EditCellBase));\nexport { DropDownEditCell };\n","import { createEditElement } from '../base/util';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar EditCellBase = /** @class */ (function () {\n function EditCellBase(parent) {\n this.parent = parent;\n }\n EditCellBase.prototype.create = function (args) {\n return createEditElement(this.parent, args.column, 'e-field', { type: 'text' });\n };\n EditCellBase.prototype.read = function (element) {\n return element.ej2_instances[0].value;\n };\n EditCellBase.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n if (this.removeEventHandler) {\n this.removeEventHandler();\n }\n this.obj.destroy();\n }\n };\n return EditCellBase;\n}());\nexport { EditCellBase };\n","import { isNullOrUndefined, closest, extend } from '@syncfusion/ej2-base';\nimport { InlineEditRender } from './inline-edit-renderer';\nimport { BatchEditRender } from './batch-edit-renderer';\nimport { DialogEditRender } from './dialog-edit-renderer';\nimport { attributes, classList, select } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { getComplexFieldID, getObject, appendChildren, parentsUntil, extendObjWithFn } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar EditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent -specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function EditRender(parent, serviceLocator) {\n //Internal variables\n this.editType = {\n 'Inline': InlineEditRender,\n 'Normal': InlineEditRender, 'Batch': BatchEditRender, 'Dialog': DialogEditRender\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = new this.editType[this.parent.editSettings.mode](parent, serviceLocator);\n this.focus = serviceLocator.getService('focus');\n }\n EditRender.prototype.addNew = function (args) {\n this.renderer.addNew(this.getEditElements(args), args);\n this.convertWidget(args);\n };\n EditRender.prototype.update = function (args) {\n this.renderer.update(this.getEditElements(args), args);\n var isCustomFormValidation = args.isCustomFormValidation;\n if (!isCustomFormValidation) {\n this.parent.notify(events.beforeStartEdit, args);\n this.convertWidget(args);\n }\n };\n EditRender.prototype.convertWidget = function (args) {\n var gObj = this.parent;\n var isFocused;\n var cell;\n var value;\n var fForm;\n var frForm;\n var frzCols = gObj.isFrozenGrid();\n var index = gObj.getFrozenMode() === 'Right' && gObj.editSettings.mode === 'Normal' ? 1 : 0;\n var form = gObj.editSettings.mode === 'Dialog' ?\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document) :\n gObj.element.getElementsByClassName('e-gridform')[parseInt(index.toString(), 10)];\n var isVirtualFrozen = frzCols && this.parent.enableColumnVirtualization && args.isScroll;\n if (frzCols && gObj.editSettings.mode === 'Normal') {\n var rowIndex = parseInt(args.row.getAttribute(literals.dataRowIndex), 10);\n if (gObj.frozenRows && ((args.requestType === 'add' && gObj.editSettings.newRowPosition === 'Top')\n || rowIndex < gObj.frozenRows)) {\n fForm = gObj.element.querySelector('.' + literals.movableHeader).querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frForm = args.frozenRightForm;\n }\n }\n else {\n fForm = gObj.element.querySelector('.' + literals.movableContent).querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frForm = args.frozenRightForm;\n }\n }\n }\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n if (isVirtualFrozen && col.getFreezeTableName() !== 'movable') {\n continue;\n }\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n var cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (isNullOrUndefined(cellArgs.element) && frzCols) {\n cellArgs.element = fForm.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n }\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n // eslint-disable-next-line\n value = (col.valueAccessor(col.field, args.rowData, col));\n if (fForm && col.getFreezeTableName() === 'movable' && gObj.editSettings.mode === 'Normal') {\n cell = fForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else if (frForm && col.getFreezeTableName() === literals.frozenRight && gObj.editSettings.mode === 'Normal') {\n cell = frForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else {\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n var temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && !cell.getAttribute('disabled') && !parentsUntil(cell, 'e-checkbox-disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n if (frzCols && !this.parent.allowTextWrap && ((args.requestType === 'add') || args.requestType === 'beginEdit')\n && this.parent.editSettings.mode !== 'Dialog' && !isNullOrUndefined(form) && !isNullOrUndefined(fForm)) {\n var mTdElement = (fForm.querySelector('tr').children[0]);\n var fTdElement = (form.querySelector('tr').children[0]);\n if (fTdElement.offsetHeight > mTdElement.offsetHeight) {\n mTdElement.style.height = fTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = fTdElement.offsetHeight + 'px';\n }\n }\n else {\n fTdElement.style.height = mTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = mTdElement.offsetHeight + 'px';\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EditRender.prototype.focusElement = function (elem, type) {\n var chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox) && chkBox.nextElementSibling) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n var isFocus = this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal' ? false : true;\n if (isFocus || (this.parent.enableVirtualization && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, literals.addedRow))) {\n elem.focus();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elem.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n };\n EditRender.prototype.getEditElements = function (args) {\n var gObj = this.parent;\n var elements = {};\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (args.isCustomFormValidation) {\n cols = this.parent.columnModel;\n }\n if (this.parent.editSettings.template) {\n return {};\n }\n var isVirtualFrozen = gObj.isFrozenGrid() && gObj.enableColumnVirtualization && args.isScroll;\n for (var i = 0, len = cols.length; i < len; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (this.parent.editModule.checkColumnIsGrouped(col) || (isVirtualFrozen && cols[parseInt(i.toString(), 10)].getFreezeTableName() !== 'movable')\n || (args.isCustomFormValidation && (col.commands || col.commandsTemplate || !col.field))) {\n continue;\n }\n if (col.commands || col.commandsTemplate) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var model = new RowModelGenerator(this.parent);\n var cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n var cells = model.generateRows(args.rowData)[0].cells;\n var cell = cells.filter(function (cell) { return cell.rowID; });\n var td = cellRenderer.render(cell[parseInt(i.toString(), 10)], args.rowData, { 'index': args.row ? args.row.getAttribute(literals.dataRowIndex) : 0 }, this.parent.enableVirtualization);\n var div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n var value = (col.valueAccessor(col.field, args.rowData, col));\n var tArgs = { column: col, value: value, type: args.requestType, data: args.rowData };\n var temp = col.edit.create;\n var input = void 0;\n if (col.editTemplate) {\n input = this.parent.createElement('span', { attrs: { 'e-mappinguid': col.uid } });\n var tempID = this.parent.element.id + col.uid + 'editTemplate';\n var tempData = extendObjWithFn({}, args.rowData, { column: col });\n var isReactCompiler = this.parent.isReact && typeof (col.editTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID, null, null, input);\n this.parent.renderTemplates();\n }\n else {\n var template = col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID);\n appendChildren(input, template);\n }\n }\n else {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n input = temp(tArgs);\n }\n else {\n input = col.edit.create(tArgs);\n }\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n var isInput = input.tagName !== 'input' && input.querySelectorAll('input').length;\n var complexFieldName = getComplexFieldID(col.field);\n attributes(isInput ? input.querySelector('input') : input, {\n name: complexFieldName, 'e-mappinguid': col.uid,\n id: gObj.element.id + complexFieldName\n });\n classList(input, ['e-input', 'e-field'], []);\n if (col.textAlign === 'Right') {\n input.classList.add('e-ralign');\n }\n if ((col.isPrimaryKey || col.isIdentity) && args.requestType === 'beginEdit' ||\n (col.isIdentity && args.requestType === 'add')) { // already disabled in cell plugins\n input.setAttribute('disabled', '');\n }\n }\n elements[col.uid] = input;\n }\n return elements;\n };\n EditRender.prototype.destroy = function () {\n this.renderer.removeEventListener();\n };\n return EditRender;\n}());\nexport { EditRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, getValue, closest } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { appendChildren } from '../base/util';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport * as events from '../base/constant';\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @class */ (function (_super) {\n __extends(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell' });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string} returns the gui\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell'\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : '', role: 'search'\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true, cssClass: this.parent.cssClass\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar' &&\n !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate) && isNullOrUndefined(column.filterBarTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @returns {Element} retruns the element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var operators;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n if (column.filter && column.filter.operator) {\n operators = column.filter.operator;\n }\n else if (gObj.filterSettings.columns.length) {\n for (var i = 0, a = gObj.filterSettings.columns; i < a.length; i++) {\n var col = a[parseInt(i.toString(), 10)];\n if (col.field === column.field) {\n operators = col.operator;\n }\n else {\n operators = 'equal';\n }\n }\n }\n else {\n operators = 'equal';\n }\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[parseInt(i.toString(), 10)].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n cssClass: this.parent.cssClass ? 'e-popup-flbar' + ' ' + this.parent.cssClass : 'e-popup-flbar'\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(events.getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\nexport { FilterCellRenderer };\n","import { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.ddOpen = this.dropDownOpen.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(events.destroy, this.destroyDropDownList, this);\n }\n }\n /**\n * @param {Element} dlgConetntEle - specifies the content element\n * @param {Element} target - specifies the target\n * @param {Column} column - specifies the column\n * @param {Dialog} dlgObj - specifies the dialog\n * @param {Object[]} operator - specifies the operator list\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line max-len\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[\"\" + optr])) ?\n this.parent.filterSettings.operators[\"\" + optr] : this.customFilterOperators[\"\" + optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n enableRtl: this.parent.enableRtl,\n text: selectedValue,\n // eslint-disable-next-line @typescript-eslint/tslint/config\n change: function () {\n var valInput = document.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (this.value === 'isempty' || this.value === 'isnotempty' ||\n this.value === 'isnull' || this.value === 'isnotnull') {\n valInput.setAttribute('disabled', '');\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput.removeAttribute('disabled');\n }\n }\n });\n this.dropOptr.addEventListener(literals['open'], this.ddOpen);\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[parseInt(i.toString(), 10)].value === col.filter.operator) {\n selValue = this.optrData[parseInt(i.toString(), 10)].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @returns {string} returns the operator\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n FlMenuOptrUI.prototype.destroyDropDownList = function () {\n if (this.dropOptr.isDestroyed) {\n return;\n }\n this.dropOptr.removeEventListener(literals['open'], this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(events.filterMenuClose, this.destroyDropDownList);\n this.parent.off(events.destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\nexport { FlMenuOptrUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, addClass, isNullOrUndefined, extend, isUndefined, Browser } from '@syncfusion/ej2-base';\nimport { HeaderRender } from './header-renderer';\nimport { ContentRender } from './content-renderer';\nimport { FreezeRowModelGenerator } from '../services/freeze-row-model-generator';\nimport * as events from '../base/constant';\nimport { renderMovable, getScrollBarWidth, wrap, addRemoveEventListener } from '../base/util';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport * as literals from '../base/string-literals';\n/**\n * Freeze module is used to render grid content with frozen rows and columns\n *\n * @hidden\n */\nvar FreezeContentRender = /** @class */ (function (_super) {\n __extends(FreezeContentRender, _super);\n function FreezeContentRender(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.isInitialRender = true;\n _this.widthService = locator.getService('widthService');\n _this.addEventListener();\n return _this;\n }\n FreezeContentRender.prototype.addEventListener = function () {\n this.parent.addEventListener(events.actionComplete, this.actionComplete.bind(this));\n this.parent.addEventListener(events.batchAdd, this.batchAdd.bind(this));\n this.parent.on(events.batchCancel, this.batchAdd.bind(this));\n this.parent.addEventListener(events.batchDelete, this.batchAdd.bind(this));\n this.parent.on(events.setHeightToFrozenElement, this.refreshScrollOffset);\n this.parent.on(events.columnVisibilityChanged, this.widthService.refreshFrozenScrollbar, this);\n };\n FreezeContentRender.prototype.batchAdd = function (args) {\n var isAdd = args.name !== 'batchCancel'\n && !(this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top');\n if (this.parent.height !== 'auto' && (isAdd || args.name === 'batchCancel' || args.name === 'batchDelete')) {\n this.refreshScrollOffset();\n var height = this.getTable().offsetHeight;\n if (args.name === 'add' && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.parent.getContent().firstChild.scroll(0, height);\n }\n }\n };\n FreezeContentRender.prototype.setHeightToContent = function (height) {\n this.getFrozenContent().style.height = height.toString() + 'px';\n this.getMovableContent().style.height = height.toString() + 'px';\n };\n FreezeContentRender.prototype.actionComplete = function (args) {\n if (this.parent.editSettings.mode !== 'Dialog' && (args.requestType === 'add' || (args.requestType === 'cancel'\n && args.row.classList.contains(literals.addedRow)))\n && (!this.parent.frozenRows || this.parent.editSettings.newRowPosition === 'Bottom') && this.parent.height !== 'auto') {\n this.refreshScrollOffset();\n var height = this.getTable().offsetHeight;\n if (args.requestType === 'add' && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.parent.getContent().firstChild.scroll(0, height);\n }\n }\n };\n FreezeContentRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.removeEventListener(events.actionComplete, this.actionComplete);\n this.parent.removeEventListener(events.batchAdd, this.batchAdd);\n this.parent.off(events.columnVisibilityChanged, this.widthService.refreshFrozenScrollbar);\n };\n FreezeContentRender.prototype.renderPanel = function () {\n _super.prototype.renderPanel.call(this);\n var fDiv = this.parent.element.querySelector('.' + literals.frozenContent);\n var mDiv = this.parent.element.querySelector('.' + literals.movableContent);\n if (isNullOrUndefined(fDiv)) {\n fDiv = this.parent.createElement('div', { className: 'e-frozencontent e-frozen-left-content' });\n mDiv = this.parent.createElement('div', { className: literals.movableContent });\n this.getPanel().querySelector('.' + literals.content).appendChild(fDiv);\n this.getPanel().querySelector('.' + literals.content).appendChild(mDiv);\n mDiv.style.scrollbarWidth = 'none';\n }\n this.setFrozenContent(fDiv);\n this.setMovableContent(mDiv);\n if (Browser.userAgent.indexOf('Mac OS') > -1 && Browser.info.name === 'safari' && !this.parent.enableVirtualization) {\n this.getPanel().firstElementChild.classList.add('e-mac-safari');\n }\n };\n FreezeContentRender.prototype.renderFrozenRigthPanel = function () {\n _super.prototype.renderPanel.call(this);\n };\n FreezeContentRender.prototype.renderEmpty = function (tbody) {\n _super.prototype.renderEmpty.call(this, tbody);\n this.getMovableContent().querySelector(literals.tbody).innerHTML = '';\n addClass([this.getMovableContent().querySelector(literals.tbody).querySelector('tr')], ['e-emptyrow']);\n this.getFrozenContent().querySelector('.e-emptyrow').querySelector('td').colSpan = this.parent.getVisibleFrozenColumns();\n this.getFrozenContent().style.borderRightWidth = '0px';\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody).innerHTML = '';\n this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody).innerHTML = '';\n }\n };\n FreezeContentRender.prototype.renderFrozenRightEmpty = function (tbody) {\n _super.prototype.renderEmpty.call(this, tbody);\n };\n FreezeContentRender.prototype.setFrozenContent = function (ele) {\n this.frozenContent = ele;\n };\n /**\n * @param {Element} ele - specifies the element\n * @returns {void}\n * @hidden\n */\n FreezeContentRender.prototype.setMovableContent = function (ele) {\n this.movableContent = ele;\n };\n FreezeContentRender.prototype.getFrozenContent = function () {\n return this.frozenContent;\n };\n FreezeContentRender.prototype.getMovableContent = function () {\n return this.movableContent;\n };\n FreezeContentRender.prototype.getModelGenerator = function () {\n return new FreezeRowModelGenerator(this.parent);\n };\n FreezeContentRender.prototype.renderFrozenRightTable = function () {\n _super.prototype.renderTable.call(this);\n };\n FreezeContentRender.prototype.renderTable = function () {\n var mTbl;\n if (this.getFrozenContent().querySelector('.' + literals.table) == null) {\n _super.prototype.renderTable.call(this);\n this.getFrozenContent().appendChild(this.getTable());\n mTbl = this.getTable().cloneNode(true);\n this.getMovableContent().appendChild(mTbl);\n }\n else {\n this.setTable(this.getFrozenContent().querySelector('.' + literals.table));\n this.setColGroup(this.parent.element.querySelector('.' + literals.gridHeader).querySelector(literals.colGroup).cloneNode(true));\n this.getFrozenContent().querySelector('.' + literals.table).appendChild(this.getColGroup());\n mTbl = this.getMovableContent().querySelector('.' + literals.table);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n }\n if (this.getMovableContent().querySelector(literals.colGroup)) {\n remove(this.getMovableContent().querySelector(literals.colGroup));\n }\n var colGroup = ((this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector(literals.tbody));\n var style = this.parent.enableVirtualization ? '' : 'flex';\n this.getPanel().firstChild.style.display = style;\n this.renderHorizontalScrollbar('e-frozenscrollbar e-frozen-left-scrollbar', this.getScrollbarDisplay());\n };\n FreezeContentRender.prototype.getScrollbarDisplay = function () {\n var frozenDisplay = '';\n if ((this.parent.getFrozenColumns() && !this.parent.getVisibleFrozenColumns())\n || (this.parent.getFrozenLeftColumnsCount() && !this.parent.getVisibleFrozenLeftCount())) {\n frozenDisplay = 'none';\n }\n return frozenDisplay;\n };\n FreezeContentRender.prototype.renderHorizontalScrollbar = function (className, display, isRight) {\n var left = this.parent.createElement('div', { className: className, styles: 'display:' + display });\n var movable = this.parent.createElement('div', { className: 'e-movablescrollbar' });\n var child = this.parent.createElement('div', { className: 'e-movablechild' });\n var scrollbarHeight = getScrollBarWidth().toString();\n this.setScrollbarHeight(movable, scrollbarHeight);\n this.setScrollbarHeight(child, scrollbarHeight);\n movable.appendChild(child);\n this.appendScrollbar(left, movable, isRight);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FreezeContentRender.prototype.appendScrollbar = function (frozen, movable, isRight) {\n var parent = this.parent.createElement('div', { className: 'e-scrollbar', styles: 'display: flex' });\n parent.appendChild(frozen);\n parent.appendChild(movable);\n this.parent.getContent().appendChild(parent);\n };\n FreezeContentRender.prototype.setScrollbarHeight = function (ele, height) {\n ele.style.minHeight = height + 'px';\n ele.style.maxHeight = height + 'px';\n };\n /**\n * @param {NotifyArgs} args - specifies the NotifyArgs\n * @param {freezeTable} tableName - specifies the Freeze Table\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FreezeContentRender.prototype.setIsFrozen = function (args, tableName) {\n args.isFrozen = !args.isFrozen;\n };\n /**\n * @param {Row[]} modelData - specifies the modeldata\n * @param {NotifyArgs} args - specifies the args\n * @returns {freezeTable} returns the freeze table\n * @hidden\n */\n FreezeContentRender.prototype.setTbody = function (modelData, args) {\n var tableName;\n if (isNullOrUndefined(modelData[0].cells[0])) {\n this.getMovableContent().querySelector(literals.tbody).innerHTML = '';\n }\n var cell = modelData[0].cells[0];\n var idx = cell.index;\n if (isUndefined(idx) && this.parent.isRowDragable()) {\n cell = modelData[0].cells[1];\n idx = cell.index;\n }\n if (idx === 0) {\n this.getPanel().firstChild.style.overflowX = 'hidden';\n if (this.parent.enableColumnVirtualization) {\n this.getMovableContent().style.overflowX = 'hidden';\n }\n }\n if (this.parent.enableColumnVirtualization && args.renderMovableContent\n && args.requestType === 'virtualscroll' && this.getMovableContent().scrollLeft > 0 && args.virtualInfo.columnIndexes[0] !== 0) {\n idx = this.parent.getFrozenColumns();\n }\n if (cell && cell.column) {\n tableName = cell.column.getFreezeTableName();\n }\n this.setIdx(idx);\n args.tableName = tableName;\n return tableName;\n };\n /**\n * @param {string} tableName - specifies the table name\n * @returns {void}\n * @hidden\n */\n FreezeContentRender.prototype.splitRows = function (tableName) {\n if (tableName === literals.frozenLeft) {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n else {\n this.movableRows = this.rows;\n }\n };\n /**\n * @param {NotifyArgs} args - specifies the notifyargs\n * @param {string} tableName - specifies the tableName\n * @returns {void}\n * @hidden\n */\n FreezeContentRender.prototype.renderNextFrozentPart = function (args, tableName) {\n var isVFTable = this.parent.enableVirtualization;\n if (tableName === literals.frozenLeft) {\n if (isVFTable) {\n args.renderMovableContent = true;\n }\n this.refreshContentRows(extend({}, args));\n }\n };\n FreezeContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n if (this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate)) {\n tbody = frag;\n }\n else {\n tbody.appendChild(frag);\n }\n if (tableName === literals.frozenLeft) {\n this.isLoaded = false;\n this.getFrozenContent().querySelector('table').appendChild(tbody);\n }\n else {\n this.refreshTbody(tbody);\n this.isLoaded = true;\n this.getMovableContent().querySelector('table').appendChild(tbody);\n this.refreshHeight();\n this.refreshScrollOffset();\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.isInitialRender) {\n this.parent.scrollModule.setHeight();\n this.isInitialRender = false;\n }\n };\n FreezeContentRender.prototype.refreshScrollOffset = function () {\n if (this.parent.height !== 'auto') {\n var height = this.getTable().offsetHeight + 1;\n this.setHeightToContent(height);\n }\n this.parent.notify(events.refreshFrozenHeight, {});\n };\n /**\n * @param {string} tableName - specifies the table name\n * @returns {HTMLElement} returns the Html element\n * @hidden\n */\n FreezeContentRender.prototype.getFrozenHeader = function (tableName) {\n if (tableName === literals.frozenLeft) {\n return this.parent.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody);\n }\n else {\n return this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n };\n FreezeContentRender.prototype.refreshTbody = function (tbody) {\n if (tbody.childElementCount < 1) {\n tbody.appendChild(this.parent.createElement('tr').appendChild(this.parent.createElement('td')));\n }\n };\n FreezeContentRender.prototype.refreshHeight = function () {\n if (!this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight' });\n }\n this.getFrozenContent().style.borderRightWidth = '1px';\n };\n FreezeContentRender.prototype.setIdx = function (idx) {\n this.idx = idx;\n };\n FreezeContentRender.prototype.getIdx = function () {\n return this.idx;\n };\n /**\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n FreezeContentRender.prototype.getTbody = function (tableName) {\n if (tableName === literals.frozenLeft) {\n return this.getTable().querySelector(literals.tbody);\n }\n else {\n return this.getMovableContent().querySelector(literals.tbody);\n }\n };\n return FreezeContentRender;\n}(ContentRender));\nexport { FreezeContentRender };\nvar FreezeRender = /** @class */ (function (_super) {\n __extends(FreezeRender, _super);\n function FreezeRender(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.addEventListener();\n return _this;\n }\n FreezeRender.prototype.addEventListener = function () {\n this.eventHandler = [{ event: events.freezeRender, handler: this.refreshFreeze },\n { event: events.frozenHeight, handler: this.setFrozenHeight },\n { event: events.uiUpdate, handler: this.enableAfterRender }];\n addRemoveEventListener(this.parent, this.eventHandler, true, this);\n };\n FreezeRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventHandler, false);\n };\n FreezeRender.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n this.rfshMovable();\n this.updateColgroup();\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n FreezeRender.prototype.renderPanel = function () {\n var fDiv = this.parent.element.querySelector('.' + literals.frozenHeader);\n var mDiv = this.parent.element.querySelector('.' + literals.movableHeader);\n _super.prototype.renderPanel.call(this);\n if (isNullOrUndefined(fDiv)) {\n fDiv = this.parent.createElement('div', { className: 'e-frozenheader e-frozen-left-header' });\n mDiv = this.parent.createElement('div', { className: literals.movableHeader });\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(fDiv);\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(mDiv);\n }\n this.setFrozenHeader(fDiv);\n this.setMovableHeader(mDiv);\n };\n FreezeRender.prototype.renderFrozenRightPanel = function () {\n _super.prototype.renderPanel.call(this);\n };\n FreezeRender.prototype.renderFrozenRightTable = function () {\n _super.prototype.renderTable.call(this);\n };\n FreezeRender.prototype.refreshUI = function () {\n var tbody = this.getMovableHeader().querySelector(literals.tbody);\n remove(this.getMovableHeader().querySelector('table'));\n _super.prototype.refreshUI.call(this);\n this.rfshMovable();\n this.getMovableHeader().querySelector(literals.tbody).innerHTML = tbody.innerHTML;\n this.updateColgroup();\n this.widthService.setWidthToColumns();\n if (!this.parent.enableVirtualization && !this.parent.isFrozenGrid()) {\n this.widthService.setWidthToTable();\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap([].slice.call(this.movableHeader.querySelectorAll('tr.e-columnheader')), true);\n }\n this.parent.updateDefaultCursor();\n renderMovable(this.parent.getContentTable().querySelector(literals.colGroup), this.parent.getFrozenColumns(), this.parent);\n this.widthService.refreshFrozenScrollbar();\n this.initializeHeaderDrag();\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n FreezeRender.prototype.refreshFrozenLeftUI = function () {\n _super.prototype.refreshUI.call(this);\n };\n FreezeRender.prototype.rfshMovable = function () {\n this.getFrozenHeader().appendChild(this.getTable());\n this.getMovableHeader().appendChild(this.createHeader(undefined, 'movable'));\n this.refreshStackedHdrHgt();\n this.addMovableFirstCls();\n };\n FreezeRender.prototype.addMovableFirstCls = function () {\n if (this.parent.getVisibleFrozenColumns()) {\n var movablefirstcell = [].slice.call(this.parent.element.querySelector('.' + literals.movableHeader).querySelector('thead').getElementsByClassName('e-columnheader'));\n var len = movablefirstcell.length;\n for (var i = 0; i < len; i++) {\n var cells = 'cells';\n var element = movablefirstcell[parseInt(i.toString(), 10)][\"\" + cells][0];\n if (element) {\n addClass([element], ['e-movablefirst']);\n if (movablefirstcell[parseInt(i.toString(), 10)][\"\" + cells][0].rowSpan > 1) {\n i = i + (movablefirstcell[parseInt(i.toString(), 10)][\"\" + cells][0].rowSpan - 1);\n }\n }\n }\n }\n };\n FreezeRender.prototype.refreshFreeze = function (obj) {\n if (obj.case === 'filter') {\n var filterRow = this.getTable().querySelector('.e-filterbar');\n if (this.parent.allowFiltering && filterRow && this.getMovableHeader().querySelector('thead')) {\n this.getMovableHeader().querySelector('thead:not(.e-masked-thead)')\n .appendChild(this.filterRenderer(filterRow, this.parent.getFrozenColumns()));\n var elements = [].slice.call(this.getMovableHeader().\n querySelectorAll('thead .e-filterbarcell .e-input'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n var args = {\n element: elem, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true\n }\n };\n Input.bindInitialEvent(args);\n }\n }\n }\n else if (obj.case === 'textwrap' || obj.case === 'refreshHeight') {\n this.refreshHeight(obj);\n this.parent.contentModule.refreshScrollOffset();\n }\n };\n FreezeRender.prototype.refreshHeight = function (obj) {\n var fRows;\n var mRows;\n var fHdr = this.getFrozenHeader();\n var mHdr = this.getMovableHeader();\n var cont = this.parent.getContent();\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n var hdrClassList = this.parent.getHeaderContent().querySelector('.' + literals.headerContent).classList;\n if (obj.case === 'textwrap') {\n if (wrapMode !== 'Header' || obj.isModeChg) {\n fRows = cont.querySelector('.' + literals.frozenContent).querySelector('tbody').childNodes;\n mRows = cont.querySelector('.' + literals.movableContent).querySelector('tbody').childNodes;\n this.setWrapHeight(fRows, mRows, obj.isModeChg, true);\n }\n if (wrapMode === 'Content' && this.parent.allowTextWrap) {\n hdrClassList.add('e-wrap');\n }\n else {\n hdrClassList.remove('e-wrap');\n }\n if (wrapMode === 'Both' || obj.isModeChg) {\n fRows = fHdr.querySelectorAll('tr');\n mRows = mHdr.querySelectorAll('tr');\n }\n else {\n mRows = mHdr.querySelector(wrapMode === 'Content' ?\n literals.tbody : 'thead').querySelectorAll('tr');\n fRows = fHdr.querySelector(wrapMode === 'Content' ?\n literals.tbody : 'thead').querySelectorAll('tr');\n }\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, this.colDepth > 1);\n }\n this.refreshStackedHdrHgt();\n }\n else if (obj.case === 'refreshHeight') {\n this.setWrapHeight(cont.querySelector('.' + literals.frozenContent).querySelectorAll('tr'), cont.querySelector('.' + literals.movableContent).querySelectorAll('tr'), obj.isModeChg);\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.setWrapHeight(fHdr.querySelectorAll('tr'), mHdr.querySelectorAll('tr'), obj.isModeChg);\n }\n }\n };\n FreezeRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'scroll') {\n this.setFrozenHeight();\n }\n };\n FreezeRender.prototype.updateResizeHandler = function () {\n var elements = [].slice.call(this.parent.getHeaderContent().getElementsByClassName('e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[parseInt(i.toString(), 10)].style.height = elements[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n };\n FreezeRender.prototype.setWrapHeight = function (fRows, mRows, isModeChg, isContReset, isStackedHdr) {\n var fRowHgt;\n var mRowHgt;\n var isWrap = this.parent.allowTextWrap;\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n var tHead = this.parent.getHeaderContent().querySelector('thead');\n var tBody = this.parent.getHeaderContent().querySelector(literals.tbody);\n var height = [];\n var width = [];\n for (var i = 0, len = fRows.length; i < len; i++) {\n if (isModeChg && ((!this.parent.rowHeight && tBody.className === 'e-hide') || (wrapMode === 'Header' && isContReset) ||\n ((wrapMode === 'Content' && tHead.contains(fRows[parseInt(i.toString(), 10)])) || (wrapMode === 'Header' && tBody.contains(fRows[parseInt(i.toString(), 10)])))) ||\n isStackedHdr) {\n fRows[parseInt(i.toString(), 10)].style.height = null;\n mRows[parseInt(i.toString(), 10)].style.height = null;\n }\n if (!isNullOrUndefined(fRows[parseInt(i.toString(), 10)]) && !isNullOrUndefined(mRows[parseInt(i.toString(), 10)])) {\n height[parseInt(i.toString(), 10)] = fRows[parseInt(i.toString(), 10)].getBoundingClientRect().height; //https://pagebuildersandwich.com/increased-plugins-performance-200/\n width[parseInt(i.toString(), 10)] = mRows[parseInt(i.toString(), 10)].getBoundingClientRect().height;\n }\n fRowHgt = height[parseInt(i.toString(), 10)];\n mRowHgt = width[parseInt(i.toString(), 10)];\n if (!isNullOrUndefined(fRows[parseInt(i.toString(), 10)]) && fRows[parseInt(i.toString(), 10)].childElementCount\n && ((isWrap && fRowHgt < mRowHgt) || (!isWrap && fRowHgt < mRowHgt) || (this.parent.allowResizing\n && this.parent.resizeModule && this.parent.resizeModule.isFrozenColResized === false))) {\n fRows[parseInt(i.toString(), 10)].style.height = mRowHgt + 'px';\n }\n if (mRows && !isNullOrUndefined(mRows[parseInt(i.toString(), 10)]) && mRows[parseInt(i.toString(), 10)].childElementCount\n && ((isWrap && fRowHgt > mRowHgt) || (!isWrap && fRowHgt > mRowHgt) || (this.parent.allowResizing\n && this.parent.resizeModule && this.parent.resizeModule.isFrozenColResized === true))) {\n mRows[parseInt(i.toString(), 10)].style.height = fRowHgt + 'px';\n }\n }\n if (isWrap && this.parent.height !== 'auto') {\n this.setFrozenHeight();\n }\n };\n FreezeRender.prototype.setFrozenHeight = function (height) {\n if (height === void 0) { height = getScrollBarWidth(); }\n var movableContentHeight = this.parent.element.querySelector('.' + literals.movableContent).getBoundingClientRect().height;\n var movableContent = this.parent.element.querySelector('.' + literals.movableContent);\n var frozenContent = this.parent.element.querySelector('.' + literals.frozenContent);\n var contentScrollWidth = this.parent.getContent().scrollWidth;\n var contentTableScrollWidth = this.parent.element.querySelector('.e-movablecontent table').scrollWidth +\n this.parent.getContentTable().scrollWidth;\n if (movableContent.scrollWidth - movableContent.clientWidth) {\n frozenContent.style.height = movableContentHeight -\n height + 'px';\n frozenContent.style.borderBottom = '';\n }\n else {\n frozenContent.style.height = movableContentHeight + 'px';\n if (((frozenContent.scrollHeight <= frozenContent.clientHeight) ||\n (movableContent.scrollHeight <= movableContent.clientHeight))\n && contentScrollWidth === contentTableScrollWidth) {\n this.parent.scrollModule.removePadding();\n }\n frozenContent.style.borderBottom = '0px';\n }\n };\n FreezeRender.prototype.refreshStackedHdrHgt = function () {\n var fRowSpan;\n var mRowSpan;\n var fTr = [].slice.call(this.getFrozenHeader().getElementsByClassName('e-columnheader'));\n var mTr = [].slice.call(this.getMovableHeader().getElementsByClassName('e-columnheader'));\n for (var i = 0, len = fTr.length; i < len; i++) {\n fRowSpan = this.getRowSpan(fTr[parseInt(i.toString(), 10)]);\n mRowSpan = this.getRowSpan(mTr[parseInt(i.toString(), 10)]);\n if (fRowSpan.min > 1 || this.parent.isRowDragable() &&\n isNullOrUndefined(this.parent.getFrozenVirtualHeader().querySelector('.e-stackedheadercell'))) {\n this.updateStackedHdrRowHgt(i, fRowSpan.max, fTr[parseInt(i.toString(), 10)], mTr);\n }\n else if (mRowSpan.min > 1) {\n this.updateStackedHdrRowHgt(i, mRowSpan.max, mTr[parseInt(i.toString(), 10)], fTr);\n }\n }\n if (this.parent.allowResizing) {\n this.updateResizeHandler();\n }\n var cols = this.parent.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if ((this.parent.isRowDragable() && !isNullOrUndefined(cols[parseInt(i.toString(), 10)].columns)) &&\n isNullOrUndefined(this.parent.getFrozenVirtualHeader().querySelector('.e-stackedheadercell'))) {\n var emptyCellIndex = this.frozenHeader.querySelectorAll('.e-columnheader').length - 1;\n this.frozenHeader.querySelectorAll('.e-columnheader')[parseInt(emptyCellIndex.toString(), 10)].remove();\n break;\n }\n }\n };\n FreezeRender.prototype.getRowSpan = function (row) {\n var rSpan;\n var minRowSpan;\n var maxRowSpan;\n var lastCellIndex = row.childElementCount - 1;\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n row.children[parseInt(lastCellIndex.toString(), 10)].remove();\n }\n for (var i = 0, len = row.childElementCount; i < len; i++) {\n if (i === 0) {\n minRowSpan = row.children[0].rowSpan;\n }\n rSpan = row.children[parseInt(i.toString(), 10)].rowSpan;\n minRowSpan = Math.min(rSpan, minRowSpan);\n maxRowSpan = Math.max(rSpan, minRowSpan);\n }\n return { min: minRowSpan, max: maxRowSpan };\n };\n FreezeRender.prototype.updateStackedHdrRowHgt = function (idx, maxRowSpan, row, rows) {\n var height = 0;\n for (var i = 0; i < maxRowSpan; i++) {\n height += rows[idx + i].style.height ?\n parseInt(rows[idx + i].style.height, 10) : rows[idx + i].offsetHeight;\n }\n row.style.height = height + 'px';\n };\n FreezeRender.prototype.setFrozenHeader = function (ele) {\n this.frozenHeader = ele;\n };\n /**\n * @param {Element} ele - specifies the element\n * @returns {void}\n * @hidden\n */\n FreezeRender.prototype.setMovableHeader = function (ele) {\n this.movableHeader = ele;\n };\n FreezeRender.prototype.getFrozenHeader = function () {\n return this.frozenHeader;\n };\n FreezeRender.prototype.getMovableHeader = function () {\n return this.movableHeader;\n };\n /**\n * @returns {void}\n * @hidden\n */\n FreezeRender.prototype.updateColgroup = function () {\n var mTable = this.getMovableHeader().querySelector('table');\n remove(this.getMovableHeader().querySelector(literals.colGroup));\n mTable.insertBefore(renderMovable(this.getFrozenHeader().querySelector(literals.colGroup), this.parent.getFrozenColumns(), this.parent), mTable.querySelector('thead'));\n };\n FreezeRender.prototype.filterRenderer = function (ele, frozenColumn, total) {\n var clone = ele.cloneNode(true);\n clone.innerHTML = '';\n var end = total ? total : this.parent.getColumns().length;\n for (var i = frozenColumn; i < end; i++) {\n clone.appendChild(ele.removeChild(ele.children[parseInt(frozenColumn.toString(), 10)]));\n }\n return clone;\n };\n return FreezeRender;\n}(HeaderRender));\nexport { FreezeRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, remove, isNullOrUndefined, setStyleAttribute, removeClass, addClass } from '@syncfusion/ej2-base';\nimport { ContentRender } from './content-renderer';\nimport * as events from '../base/constant';\nimport { isRowEnteredInGrid, parentsUntil, setDisplayValue, generateExpandPredicates, getPredicates, getGroupKeysAndFields } from '../base/util';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport * as literals from '../base/string-literals';\n/**\n * GroupLazyLoadRenderer is used to perform lazy load grouping\n *\n * @hidden\n */\nvar GroupLazyLoadRenderer = /** @class */ (function (_super) {\n __extends(GroupLazyLoadRenderer, _super);\n function GroupLazyLoadRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.childCount = 0;\n _this.scrollData = [];\n _this.isFirstChildRow = false;\n _this.isScrollDown = false;\n _this.isScrollUp = false;\n _this.groupCache = {};\n _this.cacheRowsObj = {};\n _this.startIndexes = {};\n _this.captionCounts = {};\n _this.rowsByUid = {};\n _this.objIdxByUid = {};\n _this.initialGroupCaptions = {};\n _this.requestType = ['paging', 'columnstate', 'reorder', 'cancel', 'save', 'beginEdit', 'add', 'delete',\n 'filterbeforeopen', 'filterchoicerequest', 'infiniteScroll', 'virtualscroll'];\n _this.scrollTopCache = undefined;\n /** @hidden */\n _this.refRowsObj = {};\n /** @hidden */\n _this.cacheMode = false;\n /** @hidden */\n _this.cacheBlockSize = 5;\n /** @hidden */\n _this.ignoreAccent = _this.parent.allowFiltering ? _this.parent.filterSettings.ignoreAccent : false;\n /** @hidden */\n _this.allowCaseSensitive = false;\n /** @hidden */\n _this.lazyLoadQuery = [];\n _this.locator = locator;\n _this.groupGenerator = new GroupModelGenerator(_this.parent);\n _this.summaryModelGen = new GroupSummaryModelGenerator(_this.parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(_this.parent);\n _this.rowRenderer = new RowRenderer(_this.locator, null, _this.parent);\n _this.eventListener();\n return _this;\n }\n GroupLazyLoadRenderer.prototype.eventListener = function () {\n this.parent.addEventListener(events.actionBegin, this.actionBegin.bind(this));\n this.parent.addEventListener(events.actionComplete, this.actionComplete.bind(this));\n this.parent.on(events.initialEnd, this.setLazyLoadPageSize, this);\n this.parent.on(events.setGroupCache, this.setCache, this);\n this.parent.on(events.lazyLoadScrollHandler, this.scrollHandler, this);\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n this.parent.on(events.groupCollapse, this.collapseShortcut, this);\n };\n /**\n * @param {HTMLTableRowElement} tr - specifies the table row element\n * @returns {void}\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.captionExpand = function (tr) {\n var _this = this;\n var page = this.parent.pageSettings.currentPage;\n var rowsObject = this.groupCache[parseInt(page.toString(), 10)];\n var uid = tr.getAttribute('data-uid');\n this.refreshCaches();\n if ((!this.scrollTopCache || this.parent.scrollModule['content'].scrollTop > this.scrollTopCache) &&\n !this.parent.enableVirtualization) {\n this.scrollTopCache = this.parent.scrollModule['content'].scrollTop;\n }\n var oriIndex = this.getRowObjectIndexByUid(uid);\n var isRowExist = rowsObject[oriIndex + 1] ?\n rowsObject[parseInt(oriIndex.toString(), 10)].indent < rowsObject[oriIndex + 1].indent : false;\n if (this.parent.enableVirtualization) {\n isRowExist = this.cacheRowsObj[\"\" + uid] ? true : false;\n }\n var data = rowsObject[parseInt(oriIndex.toString(), 10)];\n var key = getGroupKeysAndFields(oriIndex, rowsObject);\n var e = { captionRowElement: tr, groupInfo: data, enableCaching: true, cancel: false };\n this.parent.trigger(events.lazyLoadGroupExpand, e, function (args) {\n if (args.cancel) {\n return;\n }\n args.keys = key.keys;\n args.fields = key.fields;\n args.rowIndex = tr.rowIndex;\n args.makeRequest = !args.enableCaching || !isRowExist;\n if (!args.enableCaching && isRowExist) {\n _this.clearCache([uid]);\n }\n args.skip = 0;\n args.take = _this.pageSize;\n data.isExpand = true;\n if (_this.rowsByUid[parseInt(page.toString(), 10)][data.uid]) {\n _this.rowsByUid[parseInt(page.toString(), 10)][data.uid].isExpand = true;\n }\n _this.captionRowExpand(args);\n });\n };\n /**\n * @param {HTMLTableRowElement} tr - specifies the table row element\n * @returns {void}\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.captionCollapse = function (tr) {\n var _this = this;\n var cache = this.groupCache[this.parent.pageSettings.currentPage];\n var rowIdx = tr.rowIndex;\n var uid = tr.getAttribute('data-uid');\n this.refreshCaches();\n var captionIndex = this.getRowObjectIndexByUid(uid);\n var e = {\n captionRowElement: tr, groupInfo: cache[parseInt(captionIndex.toString(), 10)], cancel: false\n };\n this.parent.trigger(events.lazyLoadGroupCollapse, e, function (args) {\n if (args.cancel) {\n return;\n }\n args.isExpand = false;\n for (var i = 0; i < _this.lazyLoadQuery.length; i++) {\n var query = _this.lazyLoadQuery[parseInt(i.toString(), 10)];\n var where = query[0];\n var removeCollapse = args.groupInfo.data;\n if (removeCollapse['key'] === where['value']) {\n _this.lazyLoadQuery.splice(i, 1);\n }\n }\n _this.removeRows(captionIndex, rowIdx, uid);\n if (_this.parent.enableInfiniteScrolling || _this.parent.enableVirtualization) {\n _this.groupCache[_this.parent.pageSettings.currentPage] = extend([], _this.refRowsObj[_this.parent.pageSettings.currentPage]);\n _this.refreshRowObjects([], captionIndex);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden */\n GroupLazyLoadRenderer.prototype.setLazyLoadPageSize = function () {\n var scrollEle = this.parent.getContent().firstElementChild;\n var blockSize = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n this.pageSize = this.pageSize ? this.pageSize : blockSize * 3;\n this.blockSize = Math.ceil(this.pageSize / 2);\n };\n /**\n * @returns {void}\n * @hidden */\n GroupLazyLoadRenderer.prototype.clearLazyGroupCache = function () {\n this.clearCache();\n };\n GroupLazyLoadRenderer.prototype.clearCache = function (uids) {\n uids = uids ? uids : this.getInitialCaptionIndexes();\n var cache = this.groupCache[this.parent.pageSettings.currentPage];\n if (uids.length) {\n for (var i = 0; i < uids.length; i++) {\n var capIdx = this.getRowObjectIndexByUid(uids[parseInt(i.toString(), 10)]);\n var capRow = cache[parseInt(capIdx.toString(), 10)];\n if (!capRow) {\n continue;\n }\n if (this.captionCounts[this.parent.pageSettings.currentPage][capRow.uid]) {\n for (var i_1 = capIdx + 1; i_1 < cache.length; i_1++) {\n if (cache[parseInt(i_1.toString(), 10)].indent === capRow.indent\n || cache[parseInt(i_1.toString(), 10)].indent < capRow.indent) {\n delete this.captionCounts[this.parent.pageSettings.currentPage][capRow.uid];\n break;\n }\n if (cache[parseInt(i_1.toString(), 10)].isCaptionRow) {\n delete this.captionCounts[this.parent.pageSettings.currentPage][cache[parseInt(i_1.toString(), 10)].uid];\n }\n }\n }\n if (capRow.isExpand) {\n var tr = this.parent.getRowElementByUID(capRow.uid);\n if (!tr) {\n return;\n }\n this.parent.groupModule.expandCollapseRows(tr.querySelector('.e-recordplusexpand'));\n }\n var child = this.getNextChilds(capIdx);\n if (!child.length) {\n continue;\n }\n var subChild = [];\n if (child[child.length - 1].isCaptionRow) {\n subChild = this.getChildRowsByParentIndex(cache.indexOf(child[child.length - 1]), false, false, null, true, true);\n }\n var start = cache.indexOf(child[0]);\n var end = subChild.length ? cache.indexOf(subChild[subChild.length - 1]) : cache.indexOf(child[child.length - 1]);\n cache.splice(start, end - (start - 1));\n this.refreshCaches();\n }\n }\n };\n GroupLazyLoadRenderer.prototype.refreshCaches = function () {\n var page = this.parent.pageSettings.currentPage;\n var cache = this.groupCache[parseInt(page.toString(), 10)];\n if (this.parent.enableInfiniteScrolling) {\n this.rowsByUid[parseInt(page.toString(), 10)] = [];\n this.objIdxByUid[parseInt(page.toString(), 10)] = [];\n }\n else {\n this.rowsByUid = {};\n this.objIdxByUid = {};\n }\n for (var i = 0; i < cache.length; i++) {\n this.maintainRows(cache[parseInt(i.toString(), 10)], i);\n }\n };\n GroupLazyLoadRenderer.prototype.getInitialCaptionIndexes = function () {\n var page = this.parent.pageSettings.currentPage;\n var uids = [];\n for (var i = 0; i < this.initialGroupCaptions[parseInt(page.toString(), 10)].length; i++) {\n uids.push(this.initialGroupCaptions[parseInt(page.toString(), 10)][parseInt(i.toString(), 10)].uid);\n }\n return uids;\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {number} returns the row object uid\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.getRowObjectIndexByUid = function (uid) {\n return this.objIdxByUid[this.parent.pageSettings.currentPage][\"\" + uid];\n };\n GroupLazyLoadRenderer.prototype.collapseShortcut = function (args) {\n if (this.parent.groupSettings.columns.length &&\n args.target && parentsUntil(args.target, literals.content) && args.target.parentElement.tagName === 'TR') {\n if (!args.collapse && parentsUntil(args.target, literals.row)) {\n return;\n }\n var row = args.target.parentElement;\n var uid = row.getAttribute('data-uid');\n if (args.collapse) {\n var rowObj = this.getRowByUid(uid);\n var capRow = this.getRowByUid(rowObj.parentUid);\n if (capRow.isCaptionRow && capRow.isExpand) {\n var capEle = this.getRowElementByUid(rowObj.parentUid);\n this.parent.groupModule.expandCollapseRows(capEle.cells[rowObj.indent - 1]);\n }\n }\n else {\n var capRow = this.getRowByUid(uid);\n if (capRow.isCaptionRow && !capRow.isExpand) {\n var capEle = this.getRowElementByUid(uid);\n this.parent.groupModule.expandCollapseRows(capEle.cells[capRow.indent]);\n }\n }\n }\n };\n GroupLazyLoadRenderer.prototype.getRowByUid = function (uid) {\n return this.rowsByUid[this.parent.pageSettings.currentPage][\"\" + uid];\n };\n GroupLazyLoadRenderer.prototype.actionBegin = function (args) {\n if (!args.cancel) {\n if (!this.requestType.some(function (value) { return value === args.requestType; })) {\n this.groupCache = {};\n this.resetRowMaintenance();\n if (this.parent.enableVirtualization) {\n this.parent.contentModule.currentInfo = {};\n }\n }\n if (args.requestType === 'reorder' && this.parent.groupSettings.columns.length) {\n var keys = Object.keys(this.groupCache);\n for (var j = 0; j < keys.length; j++) {\n var cache = this.groupCache[keys[parseInt(j.toString(), 10)]];\n for (var i = 0; i < cache.length; i++) {\n if (cache[parseInt(i.toString(), 10)].isCaptionRow && !this.captionModelGen.isEmpty()) {\n this.changeCaptionRow(cache[parseInt(i.toString(), 10)], null, keys[parseInt(j.toString(), 10)]);\n }\n if (cache[parseInt(i.toString(), 10)].isDataRow) {\n var from = args.fromIndex + cache[parseInt(i.toString(), 10)].indent;\n var to = args.toIndex + cache[parseInt(i.toString(), 10)].indent;\n this.moveCells(cache[parseInt(i.toString(), 10)].cells, from, to);\n }\n }\n }\n }\n if (args.requestType === 'delete'\n || (args.action === 'add' && args.requestType === 'save')) {\n this.groupCache = {};\n this.resetRowMaintenance();\n if (this.parent.enableVirtualization) {\n this.parent.contentModule.currentInfo = {};\n }\n }\n }\n };\n GroupLazyLoadRenderer.prototype.actionComplete = function (args) {\n if (!args.cancel && args.requestType !== 'columnstate' && args.requestType !== 'beginEdit'\n && args.requestType !== 'delete' && args.requestType !== 'save' && args.requestType !== 'reorder') {\n this.scrollReset();\n }\n };\n GroupLazyLoadRenderer.prototype.resetRowMaintenance = function () {\n this.startIndexes = {};\n this.captionCounts = {};\n this.rowsByUid = {};\n this.objIdxByUid = {};\n this.initialGroupCaptions = {};\n };\n GroupLazyLoadRenderer.prototype.moveCells = function (arr, from, to) {\n if (from >= arr.length) {\n var k = from - arr.length;\n while ((k--) + 1) {\n arr.push(undefined);\n }\n }\n arr.splice(from, 0, arr.splice(to, 1)[0]);\n };\n GroupLazyLoadRenderer.prototype.removeRows = function (idx, trIdx, uid) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n var trs = [].slice.call(this.parent.getContent().querySelectorAll('tr'));\n var aggUid;\n var count = 0;\n if (this.parent.aggregates.length) {\n var agg = this.getAggregateByCaptionIndex(idx);\n aggUid = agg.length ? agg[agg.length - 1].uid : undefined;\n }\n var indent = rows[parseInt(idx.toString(), 10)].indent;\n this.addClass(this.getNextChilds(parseInt(idx.toString(), 10)));\n rows[parseInt(idx.toString(), 10)].isExpand = false;\n if (this.rowsByUid[parseInt(page.toString(), 10)][rows[parseInt(idx.toString(), 10)].uid]) {\n this.rowsByUid[parseInt(page.toString(), 10)][rows[parseInt(idx.toString(), 10)].uid].isExpand = false;\n }\n var capUid;\n for (var i = idx + 1; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].indent === indent || rows[parseInt(i.toString(), 10)].indent < indent) {\n capUid = rows[parseInt(i.toString(), 10)].uid;\n break;\n }\n if (rows[parseInt(i.toString(), 10)].isCaptionRow && rows[parseInt(i.toString(), 10)].isExpand) {\n this.addClass(this.getNextChilds(i));\n }\n }\n for (var i = trIdx + 1; i < trs.length; i++) {\n if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === capUid) {\n break;\n }\n else if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === aggUid) {\n remove(trs[parseInt(i.toString(), 10)]);\n break;\n }\n else {\n remove(trs[parseInt(i.toString(), 10)]);\n this.refRowsObj[parseInt(page.toString(), 10)].splice(trIdx + 1, 1);\n count = count + 1;\n }\n }\n if (this.parent.enableVirtualization) {\n this.cacheRowsObj[\"\" + uid] = this.groupCache[parseInt(page.toString(), 10)].slice(idx + 1, idx + 1 + count);\n this.groupCache[parseInt(page.toString(), 10)].splice(idx + 1, count);\n this.parent.notify(events.refreshVirtualLazyLoadCache, { rows: [], uid: rows[parseInt(idx.toString(), 10)].uid, count: count });\n this.parent.contentModule.setVirtualHeight();\n this.parent.islazyloadRequest = false;\n }\n if (this.parent.scrollModule['content'].scrollTop > this.scrollTopCache && !this.parent.enableVirtualization) {\n this.parent.scrollModule['content'].scrollTop = this.scrollTopCache;\n }\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.refRowsObj[parseInt(page.toString(), 10)] });\n };\n GroupLazyLoadRenderer.prototype.addClass = function (rows) {\n var last = rows[this.blockSize];\n if (last) {\n last.lazyLoadCssClass = 'e-lazyload-middle-down';\n }\n };\n GroupLazyLoadRenderer.prototype.getNextChilds = function (index, rowObjects) {\n var group = this.groupCache[this.parent.pageSettings.currentPage];\n var rows = rowObjects ? rowObjects : group;\n var indent = group[parseInt(index.toString(), 10)].indent + 1;\n var childRows = [];\n for (var i = rowObjects ? 0 : index + 1; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rows[parseInt(i.toString(), 10)].indent === indent) {\n childRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n return childRows;\n };\n GroupLazyLoadRenderer.prototype.lazyLoadHandler = function (args) {\n this.setStartIndexes();\n var tr = this.parent.getContent().querySelectorAll('tr')[args.index];\n var uid = tr.getAttribute('data-uid');\n var captionIndex = this.getRowObjectIndexByUid(uid);\n var captionRow = this.groupCache[this.parent.pageSettings.currentPage][parseInt(captionIndex.toString(), 10)];\n var rows = args.isRowExist ? args.isScroll ? this.scrollData\n : this.parent.enableVirtualization ? this.cacheRowsObj[\"\" + uid] :\n this.getChildRowsByParentIndex(captionIndex, true, true, null, true) : [];\n this.scrollData = [];\n if (!args.isRowExist) {\n this.setRowIndexes(captionIndex, captionRow);\n this.refreshCaptionRowCount(this.groupCache[this.parent.pageSettings.currentPage][parseInt(captionIndex.toString(), 10)], args.count);\n if (Object.keys(args.data).indexOf('GroupGuid') !== -1) {\n for (var i = 0; i < args.data.length; i++) {\n var data = this.groupGenerator.generateCaptionRow(args.data[parseInt(i.toString(), 10)], args.level, captionRow.parentGid, undefined, 0, captionRow.uid);\n rows.push(data);\n if (this.parent.aggregates.length) {\n rows = rows.concat((this.summaryModelGen.generateRows(args.data[parseInt(i.toString(), 10)], { level: args.level + 1, parentUid: data.uid })));\n }\n }\n }\n else {\n this.groupGenerator.index = this.getStartIndex(captionIndex, args.isScroll);\n rows = this.groupGenerator.generateDataRows(args.data, args.level, captionRow.parentGid, 0, captionRow.uid);\n }\n }\n var trIdx = args.isScroll ? this.rowIndex : args.index;\n var nxtChild = this.getNextChilds(captionIndex, rows);\n var lastRow = !args.up ? this.hasLastChildRow(args.isScroll, args.count, nxtChild.length) : true;\n if (!args.isRowExist && !lastRow) {\n nxtChild[this.blockSize].lazyLoadCssClass = 'e-lazyload-middle-down';\n }\n if (!lastRow) {\n nxtChild[nxtChild.length - 1].lazyLoadCssClass = 'e-not-lazyload-end';\n }\n var aggregates = !args.isScroll && !args.isRowExist ? this.getAggregateByCaptionIndex(captionIndex) : [];\n if (!args.up) {\n if (!args.isRowExist || (this.parent.enableVirtualization && args.isRowExist && this.cacheRowsObj[\"\" + uid])) {\n this.refreshRowObjects(rows, args.isScroll ? this.rowObjectIndex : captionIndex);\n }\n }\n if (this.parent.enableVirtualization) {\n var uid_1 = args.isScroll ? this.groupCache[this.parent.pageSettings.currentPage][this.rowIndex].uid : captionRow.uid;\n this.parent.notify(events.refreshVirtualLazyLoadCache, { rows: rows, uid: uid_1 });\n this.parent.contentModule.setVirtualHeight();\n this.parent.contentModule.isTop = false;\n }\n this.render(trIdx, rows, lastRow, aggregates);\n if (this.isFirstChildRow && !args.up) {\n this.parent.getContent().firstElementChild.scrollTop = rows.length * this.parent.getRowHeight();\n }\n this.isFirstChildRow = false;\n this.rowIndex = undefined;\n this.rowObjectIndex = undefined;\n this.childCount = 0;\n for (var i = 0; i < rows.length; i++) {\n this.refRowsObj[this.parent.pageSettings.currentPage].splice(captionIndex + i + 1, 0, rows[parseInt(i.toString(), 10)]);\n }\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.refRowsObj[this.parent.pageSettings.currentPage] });\n if (this.parent.enableVirtualMaskRow) {\n this.parent.removeMaskRow();\n }\n };\n GroupLazyLoadRenderer.prototype.setRowIndexes = function (capIdx, row) {\n if (!this.captionCounts[this.parent.pageSettings.currentPage]) {\n this.captionCounts[this.parent.pageSettings.currentPage] = {};\n }\n if (row.isCaptionRow) {\n this.captionCounts[this.parent.pageSettings.currentPage][row.uid] = row.data.count;\n }\n };\n GroupLazyLoadRenderer.prototype.getStartIndex = function (capIdx, isScroll) {\n var page = this.parent.pageSettings.currentPage;\n var cache = this.groupCache[parseInt(page.toString(), 10)];\n if (isScroll) {\n return cache[this.rowObjectIndex].index + 1;\n }\n var count = 0;\n var idx = 0;\n var prevCapRow = this.getRowByUid(cache[parseInt(capIdx.toString(), 10)].parentUid);\n if (prevCapRow) {\n idx = this.prevCaptionCount(prevCapRow);\n }\n if (cache[parseInt(capIdx.toString(), 10)].indent > 0) {\n for (var i = capIdx - 1; i >= 0; i--) {\n if (cache[parseInt(i.toString(), 10)].indent < cache[parseInt(capIdx.toString(), 10)].indent) {\n break;\n }\n if (cache[parseInt(i.toString(), 10)].isCaptionRow && cache[parseInt(i.toString(), 10)]\n .indent === cache[parseInt(capIdx.toString(), 10)].indent) {\n count = count + cache[parseInt(i.toString(), 10)].data.count;\n }\n }\n }\n var index = count + idx\n + this.startIndexes[parseInt(page.toString(), 10)][cache[parseInt(capIdx.toString(), 10)].parentGid];\n return index;\n };\n GroupLazyLoadRenderer.prototype.prevCaptionCount = function (prevCapRow) {\n var page = this.parent.pageSettings.currentPage;\n var cache = this.groupCache[parseInt(page.toString(), 10)];\n var idx = 0;\n for (var i = cache.indexOf(prevCapRow) - 1; i >= 0; i--) {\n if (cache[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n if (cache[parseInt(i.toString(), 10)].indent < prevCapRow.indent) {\n break;\n }\n if (cache[parseInt(i.toString(), 10)].isCaptionRow && cache[parseInt(i.toString(), 10)].indent === prevCapRow.indent) {\n var count = this.captionCounts[parseInt(page.toString(), 10)][cache[parseInt(i.toString(), 10)].uid];\n idx = idx + (count ? count : cache[parseInt(i.toString(), 10)].data.count);\n }\n }\n var capRow = this.getRowByUid(prevCapRow.parentUid);\n if (capRow) {\n idx = idx + this.prevCaptionCount(capRow);\n }\n return idx;\n };\n GroupLazyLoadRenderer.prototype.setStartIndexes = function () {\n var cache = this.groupCache[this.parent.pageSettings.currentPage];\n if (!this.startIndexes[this.parent.pageSettings.currentPage]) {\n var indexes = [];\n var idx = void 0;\n for (var i = 0; i < cache.length; i++) {\n if (cache[parseInt(i.toString(), 10)].isCaptionRow) {\n if (!indexes.length) {\n indexes.push(0);\n }\n else {\n indexes.push(cache[parseInt(idx.toString(), 10)].data.count + indexes[indexes.length - 1]);\n }\n idx = i;\n }\n }\n this.startIndexes[this.parent.pageSettings.currentPage] = indexes;\n }\n };\n GroupLazyLoadRenderer.prototype.hasLastChildRow = function (isScroll, captionCount, rowCount) {\n return isScroll ? captionCount === this.childCount + rowCount : captionCount === rowCount;\n };\n GroupLazyLoadRenderer.prototype.refreshCaptionRowCount = function (row, count) {\n row.data.count = count;\n };\n GroupLazyLoadRenderer.prototype.render = function (trIdx, rows, hasLastChildRow, aggregates) {\n var tr = this.parent.getContent().querySelectorAll('tr')[parseInt(trIdx.toString(), 10)];\n var scrollEle = this.parent.getContent().firstElementChild;\n var rowHeight = this.parent.getRowHeight();\n if (tr && aggregates.length) {\n for (var i = aggregates.length - 1; i >= 0; i--) {\n tr.insertAdjacentElement('afterend', this.rowRenderer.render(aggregates[parseInt(i.toString(), 10)], this.parent.getColumns()));\n }\n }\n if (tr && rows.length) {\n for (var i = rows.length - 1; i >= 0; i--) {\n if (this.confirmRowRendering(rows[parseInt(i.toString(), 10)])) {\n tr.insertAdjacentElement('afterend', this.rowRenderer.render(rows[parseInt(i.toString(), 10)], this.parent.getColumns()));\n if (this.isScrollDown) {\n scrollEle.scrollTop = scrollEle.scrollTop - rowHeight;\n }\n if (this.isScrollUp) {\n scrollEle.scrollTop = scrollEle.scrollTop + rowHeight;\n }\n }\n }\n }\n this.isScrollDown = false;\n this.isScrollUp = false;\n };\n /**\n * @param {Row} row - specifies the row\n * @param {number} index - specifies the index\n * @returns {void}\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.maintainRows = function (row, index) {\n var page = this.parent.pageSettings.currentPage;\n if (!this.rowsByUid[parseInt(page.toString(), 10)]) {\n this.rowsByUid[parseInt(page.toString(), 10)] = {};\n this.objIdxByUid[parseInt(page.toString(), 10)] = {};\n }\n if (row.uid) {\n this.rowsByUid[parseInt(page.toString(), 10)][row.uid] = row;\n }\n this.objIdxByUid[parseInt(page.toString(), 10)][row.uid] = index;\n };\n GroupLazyLoadRenderer.prototype.confirmRowRendering = function (row) {\n var check = true;\n if (isNullOrUndefined(row.indent) && !row.isDataRow && !row.isCaptionRow) {\n var cap = this.getRowByUid(row.parentUid);\n if (cap.isCaptionRow && !cap.isExpand) {\n check = false;\n }\n }\n return check;\n };\n GroupLazyLoadRenderer.prototype.refreshRowObjects = function (newRows, index) {\n var page = this.parent.pageSettings.currentPage;\n var rowsObject = this.groupCache[parseInt(page.toString(), 10)];\n this.rowsByUid[parseInt(page.toString(), 10)] = {};\n this.objIdxByUid[parseInt(page.toString(), 10)] = {};\n var newRowsObject = [];\n var k = 0;\n for (var i = 0; i < rowsObject.length; i++) {\n if (i === index) {\n this.maintainRows(rowsObject[parseInt(i.toString(), 10)], k);\n newRowsObject.push(rowsObject[parseInt(i.toString(), 10)]);\n k++;\n for (var j = 0; j < newRows.length; j++) {\n this.maintainRows(newRows[parseInt(j.toString(), 10)], k);\n newRowsObject.push(newRows[parseInt(j.toString(), 10)]);\n k++;\n }\n }\n else {\n this.maintainRows(rowsObject[parseInt(i.toString(), 10)], k);\n newRowsObject.push(rowsObject[parseInt(i.toString(), 10)]);\n k++;\n }\n }\n this.groupCache[this.parent.pageSettings.currentPage] = extend([], newRowsObject);\n this.updateCurrentViewData();\n };\n GroupLazyLoadRenderer.prototype.getAggregateByCaptionIndex = function (index) {\n var cache = this.groupCache[this.parent.pageSettings.currentPage];\n var parent = cache[parseInt(index.toString(), 10)];\n var indent = parent.indent;\n var uid = parent.uid;\n var agg = [];\n for (var i = index + 1; i < cache.length; i++) {\n if (cache[parseInt(i.toString(), 10)].indent === indent) {\n break;\n }\n if (isNullOrUndefined(cache[parseInt(i.toString(), 10)].indent) && cache[parseInt(i.toString(), 10)].parentUid === uid) {\n agg.push(cache[parseInt(i.toString(), 10)]);\n }\n }\n return agg;\n };\n GroupLazyLoadRenderer.prototype.getChildRowsByParentIndex = function (index, deep, block, data, includeAgg, includeCollapseAgg) {\n var cache = data ? data : this.groupCache[this.parent.pageSettings.currentPage];\n var parentRow = cache[parseInt(index.toString(), 10)];\n var agg = [];\n if (!parentRow.isCaptionRow || (parentRow.isCaptionRow && !parentRow.isExpand && !includeCollapseAgg)) {\n return [];\n }\n if (includeAgg && this.parent.aggregates.length) {\n agg = this.getAggregateByCaptionIndex(index);\n }\n var indent = parentRow.indent;\n var uid = parentRow.uid;\n var rows = [];\n var count = 0;\n for (var i = index + 1; i < cache.length; i++) {\n if (cache[parseInt(i.toString(), 10)].parentUid === uid) {\n if (isNullOrUndefined(cache[parseInt(i.toString(), 10)].indent)) {\n continue;\n }\n count++;\n rows.push(cache[parseInt(i.toString(), 10)]);\n if (deep && cache[parseInt(i.toString(), 10)].isCaptionRow) {\n rows = rows.concat(this.getChildRowsByParentIndex(i, deep, block, data, includeAgg));\n }\n if (block && count === this.pageSize) {\n break;\n }\n }\n if (cache[parseInt(i.toString(), 10)].indent === indent) {\n break;\n }\n }\n return rows.concat(agg);\n };\n /**\n * @param {boolean} isReorder - specifies the isreorder\n * @returns {Row[]} returns the row\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.initialGroupRows = function (isReorder) {\n var rows = [];\n var cache = this.groupCache[this.parent.pageSettings.currentPage];\n if (isReorder) {\n return this.getRenderedRowsObject();\n }\n for (var i = 0; i < cache.length; i++) {\n if (cache[parseInt(i.toString(), 10)].indent === 0) {\n rows.push(cache[parseInt(i.toString(), 10)]);\n rows = rows.concat(this.getChildRowsByParentIndex(i, true, true, cache, true));\n }\n }\n return rows;\n };\n /**\n * @returns {Row[]} retruns the row\n * @hidden */\n GroupLazyLoadRenderer.prototype.getRenderedRowsObject = function () {\n var rows = [];\n var trs = [].slice.call(this.parent.getContent().querySelectorAll('tr'));\n for (var i = 0; i < trs.length; i++) {\n rows.push(this.getRowByUid(trs[parseInt(i.toString(), 10)].getAttribute('data-uid')));\n }\n return rows;\n };\n GroupLazyLoadRenderer.prototype.getCacheRowsOnDownScroll = function (index) {\n var rows = [];\n var rowsObject = this.groupCache[this.parent.pageSettings.currentPage];\n var k = index;\n for (var i = 0; i < this.pageSize; i++) {\n if (!rowsObject[parseInt(k.toString(), 10)] || rowsObject[parseInt(k.toString(), 10)]\n .indent < rowsObject[parseInt(index.toString(), 10)].indent) {\n break;\n }\n if (rowsObject[parseInt(k.toString(), 10)].indent === rowsObject[parseInt(index.toString(), 10)].indent) {\n rows.push(rowsObject[parseInt(k.toString(), 10)]);\n if (rowsObject[parseInt(k.toString(), 10)].isCaptionRow && rowsObject[parseInt(k.toString(), 10)].isExpand) {\n rows = rows.concat(this.getChildRowsByParentIndex(k, true, true, null, true));\n }\n }\n if (rowsObject[parseInt(k.toString(), 10)].indent > rowsObject[parseInt(index.toString(), 10)].indent\n || isNullOrUndefined(rowsObject[parseInt(k.toString(), 10)].indent)) {\n i--;\n }\n k++;\n }\n return rows;\n };\n GroupLazyLoadRenderer.prototype.getCacheRowsOnUpScroll = function (start, end, index) {\n var rows = [];\n var rowsObject = this.groupCache[this.parent.pageSettings.currentPage];\n var str = false;\n for (var i = 0; i < rowsObject.length; i++) {\n if (str && (!rowsObject[parseInt(i.toString(), 10)] || rowsObject[parseInt(i.toString(), 10)]\n .indent < rowsObject[parseInt(index.toString(), 10)].indent || rowsObject[parseInt(i.toString(), 10)].uid === end)) {\n break;\n }\n if (!str && rowsObject[parseInt(i.toString(), 10)].uid === start) {\n str = true;\n }\n if (str && rowsObject[parseInt(i.toString(), 10)].indent === rowsObject[parseInt(index.toString(), 10)].indent) {\n rows.push(rowsObject[parseInt(i.toString(), 10)]);\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow && rowsObject[parseInt(i.toString(), 10)].isExpand) {\n rows = rows.concat(this.getChildRowsByParentIndex(i, true, true, null, true));\n }\n }\n }\n return rows;\n };\n GroupLazyLoadRenderer.prototype.scrollHandler = function (e) {\n if (this.parent.isDestroyed || this.childCount) {\n return;\n }\n var downTrs = [].slice.call(this.parent.getContent().getElementsByClassName('e-lazyload-middle-down'));\n var upTrs = [].slice.call(this.parent.getContent().getElementsByClassName('e-lazyload-middle-up'));\n var endTrs = [].slice.call(this.parent.getContent().getElementsByClassName('e-not-lazyload-end'));\n var tr;\n var lazyLoadDown = false;\n var lazyLoadUp = false;\n var lazyLoadEnd = false;\n if (e.scrollDown && downTrs.length) {\n var result = this.findRowElements(downTrs);\n tr = result.tr;\n lazyLoadDown = result.entered;\n }\n if (!e.scrollDown && endTrs) {\n for (var i = 0; i < endTrs.length; i++) {\n var top_1 = endTrs[parseInt(i.toString(), 10)].getBoundingClientRect().top;\n var scrollHeight = this.parent.getContent().scrollHeight;\n if (top_1 > 0 && top_1 < scrollHeight) {\n tr = endTrs[parseInt(i.toString(), 10)];\n lazyLoadEnd = true;\n this.rowIndex = tr.rowIndex;\n break;\n }\n }\n }\n if (!e.scrollDown && upTrs.length && !lazyLoadEnd) {\n var result = this.findRowElements(upTrs);\n tr = result.tr;\n lazyLoadUp = result.entered;\n }\n if (tr && !tr.classList.contains('e-masked-row')) {\n if (lazyLoadDown && e.scrollDown && lazyLoadDown && tr) {\n this.scrollDownHandler(tr);\n }\n if (!e.scrollDown && lazyLoadEnd && tr) {\n this.scrollUpEndRowHandler(tr);\n }\n if (this.cacheMode && !e.scrollDown && !lazyLoadEnd && lazyLoadUp && tr) {\n this.scrollUpHandler(tr);\n }\n }\n };\n GroupLazyLoadRenderer.prototype.scrollUpEndRowHandler = function (tr) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n var uid = tr.getAttribute('data-uid');\n var index = this.rowObjectIndex = this.getRowObjectIndexByUid(uid);\n var idx = index;\n var childRow = rows[parseInt(index.toString(), 10)];\n var parentCapRow = this.getRowByUid(childRow.parentUid);\n var capRowObjIdx = this.getRowObjectIndexByUid(parentCapRow.uid);\n var captionRowEle = this.parent.getContent().querySelector('tr[data-uid=' + parentCapRow.uid + ']');\n var capRowEleIndex = captionRowEle.rowIndex;\n var child = this.getChildRowsByParentIndex(capRowObjIdx);\n var childIdx = child.indexOf(childRow);\n var currentPage = Math.ceil(childIdx / this.pageSize);\n if (currentPage === 1) {\n return;\n }\n this.childCount = currentPage * this.pageSize;\n index = this.getCurrentBlockEndIndex(childRow, index);\n if (this.childCount < parentCapRow.data.count) {\n tr.classList.remove('e-not-lazyload-end');\n childRow.lazyLoadCssClass = '';\n var isRowExist = rows[index + 1] ? childRow.indent === rows[index + 1].indent : false;\n this.scrollData = isRowExist ? this.getCacheRowsOnDownScroll(index + 1) : [];\n var key = getGroupKeysAndFields(capRowObjIdx, rows);\n var args = {\n rowIndex: capRowEleIndex, makeRequest: !isRowExist, groupInfo: parentCapRow, fields: key.fields,\n keys: key.keys, skip: this.childCount, take: this.pageSize, isScroll: true\n };\n if (this.cacheMode && this.childCount >= (this.pageSize * this.cacheBlockSize)) {\n var child_1 = this.getChildRowsByParentIndex(capRowObjIdx);\n var currenBlock = Math.ceil((child_1.indexOf(rows[parseInt(idx.toString(), 10)]) / this.pageSize));\n var removeBlock = currenBlock - (this.cacheBlockSize - 1);\n this.removeBlock(uid, isRowExist, removeBlock, child_1);\n args.cachedRowIndex = (removeBlock * this.pageSize);\n }\n this.captionRowExpand(args);\n }\n else {\n this.childCount = 0;\n }\n };\n GroupLazyLoadRenderer.prototype.scrollDownHandler = function (tr) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n var uid = tr.getAttribute('data-uid');\n var index = this.getRowObjectIndexByUid(uid);\n var idx = index;\n var childRow = rows[parseInt(index.toString(), 10)];\n var parentCapRow = this.getRowByUid(childRow.parentUid);\n var capRowObjIdx = this.getRowObjectIndexByUid(parentCapRow.uid);\n var captionRowEle = this.getRowElementByUid(parentCapRow.uid);\n var capRowEleIndex = captionRowEle.rowIndex;\n var child = this.getChildRowsByParentIndex(capRowObjIdx);\n if (child.length === 0) {\n return;\n }\n var childIdx = child.indexOf(childRow);\n var currentPage = Math.ceil(childIdx / this.pageSize);\n this.childCount = currentPage * this.pageSize;\n if (isNullOrUndefined(child[this.childCount - 1])) {\n return;\n }\n if (this.parent.enableVirtualization) {\n this.parent.islazyloadRequest = true;\n }\n index = this.rowObjectIndex = this.getRowObjectIndexByUid(child[this.childCount - 1].uid);\n var lastchild = rows[parseInt(index.toString(), 10)];\n var lastRow = this.getRowElementByUid(lastchild.uid);\n this.rowIndex = lastRow.rowIndex;\n index = this.getCurrentBlockEndIndex(lastchild, index);\n if (this.childCount === parentCapRow.data.count) {\n this.parent.islazyloadRequest = false;\n }\n if (this.childCount < parentCapRow.data.count) {\n var isRowExist = rows[index + 1] ? childRow.indent === rows[index + 1].indent : false;\n if (isRowExist && !isNullOrUndefined(this.getRowElementByUid(rows[index + 1].uid))) {\n this.parent.islazyloadRequest = false;\n this.childCount = 0;\n return;\n }\n if (currentPage > 1 || !this.cacheMode) {\n tr.classList.remove('e-lazyload-middle-down');\n lastRow.classList.remove('e-not-lazyload-end');\n lastchild.lazyLoadCssClass = '';\n }\n this.scrollData = isRowExist ? this.getCacheRowsOnDownScroll(this.rowObjectIndex + 1) : [];\n var query = getGroupKeysAndFields(capRowObjIdx, rows);\n var args = {\n rowIndex: capRowEleIndex, makeRequest: !isRowExist, groupInfo: parentCapRow, fields: query.fields,\n keys: query.keys, skip: this.childCount, take: this.pageSize, isScroll: true\n };\n if (this.cacheMode && (this.childCount - this.pageSize) >= (this.pageSize * this.cacheBlockSize)) {\n this.isScrollDown = true;\n var child_2 = this.getChildRowsByParentIndex(capRowObjIdx);\n var currenBlock = Math.ceil((child_2.indexOf(rows[parseInt(idx.toString(), 10)]) / this.pageSize)) - 1;\n var removeBlock = (currenBlock - (this.cacheBlockSize - 1)) + 1;\n this.removeBlock(uid, isRowExist, removeBlock, child_2, lastchild);\n args.cachedRowIndex = (removeBlock * this.pageSize);\n }\n this.captionRowExpand(args);\n }\n else {\n this.childCount = 0;\n this.parent.islazyloadRequest = false;\n }\n };\n GroupLazyLoadRenderer.prototype.getCurrentBlockEndIndex = function (row, index) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n if (row.isCaptionRow) {\n if (row.isExpand) {\n var childCount = this.getChildRowsByParentIndex(index, true).length;\n this.rowIndex = this.rowIndex + childCount;\n }\n var agg = this.getAggregateByCaptionIndex(index);\n this.rowObjectIndex = this.rowObjectIndex + agg.length;\n var idx = index;\n for (var i = idx + 1; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].indent === rows[parseInt(index.toString(), 10)].indent\n || rows[parseInt(i.toString(), 10)].indent < rows[parseInt(index.toString(), 10)].indent) {\n index = idx;\n break;\n }\n else {\n idx++;\n }\n }\n }\n return index;\n };\n GroupLazyLoadRenderer.prototype.removeBlock = function (uid, isRowExist, removeBlock, child, lastchild) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n var uid1 = child[(((removeBlock + 1) * this.pageSize) - 1) - this.blockSize].uid;\n var uid2 = child[(removeBlock * this.pageSize) - this.pageSize].uid;\n var uid3 = child[(removeBlock * this.pageSize)].uid;\n var firstIdx = this.getRowObjectIndexByUid(uid1);\n rows[parseInt(firstIdx.toString(), 10)].lazyLoadCssClass = 'e-lazyload-middle-up';\n this.getRowElementByUid(uid1).classList.add('e-lazyload-middle-up');\n if (lastchild) {\n this.getRowElementByUid(uid3).classList.add('e-not-lazyload-first');\n this.getRowByUid(uid3).lazyLoadCssClass = 'e-not-lazyload-first';\n this.getRowByUid(uid2).lazyLoadCssClass = '';\n }\n if (isRowExist) {\n this.removeTopRows(lastchild ? lastchild.uid : uid, uid2, uid3);\n }\n else {\n this.uid1 = uid2;\n this.uid2 = uid3;\n this.uid3 = lastchild ? lastchild.uid : uid;\n }\n };\n GroupLazyLoadRenderer.prototype.scrollUpHandler = function (tr) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n var uid = tr.getAttribute('data-uid');\n var row = this.getRowByUid(uid);\n var index = this.rowObjectIndex = this.getRowObjectIndexByUid(uid);\n var parentCapRow = this.getRowByUid(row.parentUid);\n var capRowObjIdx = this.rowIndex = this.getRowObjectIndexByUid(parentCapRow.uid);\n var captionRowEle = this.parent.getRowElementByUID(parentCapRow.uid);\n var capRowEleIndex = captionRowEle.rowIndex;\n var child = this.getChildRowsByParentIndex(capRowObjIdx);\n var childIdx = child.indexOf(rows[parseInt(index.toString(), 10)]);\n var currenBlock = Math.floor((childIdx / this.pageSize));\n var idx = this.blockSize;\n if ((this.blockSize * 2) > this.pageSize) {\n idx = (this.blockSize * 2) - this.pageSize;\n idx = this.blockSize - idx;\n }\n var start = child[(childIdx - (idx - 1)) - this.pageSize].uid;\n var end = child[childIdx - (idx - 1)].uid;\n this.scrollData = this.getCacheRowsOnUpScroll(start, end, index - (idx - 1));\n this.isFirstChildRow = currenBlock > 1;\n if (this.isFirstChildRow) {\n this.scrollData[0].lazyLoadCssClass = 'e-not-lazyload-first';\n }\n this.getRowByUid(end).lazyLoadCssClass = '';\n this.getRowElementByUid(end).classList.remove('e-not-lazyload-first');\n var removeBlock = currenBlock + this.cacheBlockSize;\n if (child.length !== parentCapRow.data.count && (removeBlock * this.pageSize > child.length)) {\n this.isFirstChildRow = false;\n this.scrollData[0].lazyLoadCssClass = '';\n this.getRowElementByUid(end).classList.add('e-not-lazyload-first');\n return;\n }\n var count = removeBlock * this.pageSize > parentCapRow.data.count\n ? parentCapRow.data.count : removeBlock * this.pageSize;\n var size = removeBlock * this.pageSize > parentCapRow.data.count\n ? (this.pageSize - ((this.pageSize * removeBlock) - parentCapRow.data.count)) : this.pageSize;\n var childRows = this.getChildRowsByParentIndex(rows.indexOf(child[count - 1]), true, false, null, true);\n var uid1 = childRows.length ? childRows[childRows.length - 1].uid : child[(count - 1)].uid;\n var uid2 = child[count - size].uid;\n var uid3 = child[(count - size) - 1].uid;\n var lastIdx = this.objIdxByUid[parseInt(page.toString(), 10)][\"\" + uid2] - idx;\n if (rows[parseInt(lastIdx.toString(), 10)].lazyLoadCssClass === 'e-lazyload-middle-down') {\n var trEle = this.getRowElementByUid(rows[parseInt(lastIdx.toString(), 10)].uid);\n if (trEle) {\n trEle.classList.add('e-lazyload-middle-down');\n }\n }\n this.getRowByUid(uid1).lazyLoadCssClass = '';\n this.getRowByUid(uid3).lazyLoadCssClass = 'e-not-lazyload-end';\n this.getRowElementByUid(uid3).classList.add('e-not-lazyload-end');\n this.removeBottomRows(uid1, uid2, uid3);\n this.rowIndex = tr.rowIndex - idx;\n if (tr.classList.length > 1) {\n tr.classList.remove('e-lazyload-middle-up');\n }\n else {\n tr.removeAttribute('class');\n }\n if (!isNullOrUndefined(this.getRowElementByUid(start))) {\n this.childCount = 0;\n this.scrollData = [];\n return;\n }\n var key = getGroupKeysAndFields(this.getRowObjectIndexByUid(parentCapRow.uid), rows);\n var args = {\n rowIndex: capRowEleIndex, makeRequest: false, groupInfo: parentCapRow, fields: key.fields,\n keys: key.keys, skip: this.childCount, take: this.pageSize, isScroll: true, scrollUp: true\n };\n this.isScrollUp = true;\n this.captionRowExpand(args);\n };\n GroupLazyLoadRenderer.prototype.findRowElements = function (rows) {\n var entered = false;\n var tr;\n for (var i = 0; i < rows.length; i++) {\n var rowIdx = rows[parseInt(i.toString(), 10)].rowIndex;\n if (this.parent.enableVirtualization) {\n var currentInfo = this.parent.contentModule.currentInfo;\n if (currentInfo && currentInfo.blockIndexes && currentInfo.blockIndexes[0] > 1) {\n rowIdx = rowIdx + (this.parent.contentModule.offsets[currentInfo.blockIndexes[0] - 1] /\n this.parent.getRowHeight());\n }\n }\n if (isRowEnteredInGrid(rowIdx, this.parent)) {\n entered = true;\n this.rowIndex = rowIdx;\n tr = rows[parseInt(i.toString(), 10)];\n break;\n }\n }\n return { entered: entered, tr: tr };\n };\n GroupLazyLoadRenderer.prototype.getRowElementByUid = function (uid) {\n return this.parent.getContent().querySelector('tr[data-uid=' + uid + ']');\n };\n GroupLazyLoadRenderer.prototype.removeTopRows = function (uid1, uid2, uid3) {\n var trs = [].slice.call(this.parent.getContent().querySelectorAll('tr'));\n var start = false;\n for (var i = 0; i < trs.length; i++) {\n if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === uid3) {\n var tr = this.parent.getContent().querySelector('tr[data-uid=' + uid1 + ']');\n if (tr) {\n this.rowIndex = tr.rowIndex;\n }\n break;\n }\n if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === uid2) {\n start = true;\n }\n if (start) {\n remove(trs[parseInt(i.toString(), 10)]);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupLazyLoadRenderer.prototype.removeBottomRows = function (uid1, uid2, uid3) {\n var trs = [].slice.call(this.parent.getContent().querySelectorAll('tr'));\n var trigger = false;\n for (var i = 0; i < trs.length; i++) {\n if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === uid2) {\n trigger = true;\n }\n if (trigger) {\n remove(trs[parseInt(i.toString(), 10)]);\n if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === uid1) {\n break;\n }\n }\n }\n };\n GroupLazyLoadRenderer.prototype.setCache = function (e) {\n var page = this.parent.pageSettings.currentPage;\n if (this.parent.enableVirtualization) {\n this.parent.lazyLoadRender = this;\n }\n if (this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll' &&\n e.args['prevPage'] !== e.args['currentPage']) {\n this.groupCache[parseInt(page.toString(), 10)] = this.initialGroupCaptions[parseInt(page.toString(), 10)] = this.groupCache[e.args['prevPage']]\n .concat(extend([], e.data));\n }\n else {\n this.groupCache[parseInt(page.toString(), 10)] =\n this.initialGroupCaptions[parseInt(page.toString(), 10)] = extend([], e.data);\n }\n };\n GroupLazyLoadRenderer.prototype.captionRowExpand = function (args) {\n var _this = this;\n var captionRow = args.groupInfo;\n var level = this.parent.groupSettings.columns.indexOf(captionRow.data.field) + 1;\n var pred = generateExpandPredicates(args.fields, args.keys, this);\n var predicateList = getPredicates(pred);\n var lazyLoad = { level: level, skip: args.skip, take: args.take, where: predicateList };\n if (args.makeRequest) {\n var query = this.parent.renderModule.data.generateQuery(true);\n if (!query.isCountRequired) {\n query.isCountRequired = true;\n }\n query.lazyLoad.push({ key: 'onDemandGroupInfo', value: lazyLoad });\n this.lazyLoadQuery.push(lazyLoad['where']);\n if (args.isScroll && this.parent.enableVirtualMaskRow) {\n this.parent.showMaskRow();\n }\n else {\n this.parent.showSpinner();\n }\n this.parent.renderModule.data.getData({}, query).then(function (e) {\n if (_this.parent.enableVirtualization) {\n _this.parent.islazyloadRequest = true;\n }\n _this.parent.hideSpinner();\n _this.parent.removeMaskRow();\n if (e.result.length === 0) {\n return;\n }\n if (_this.cacheMode && _this.uid1 && _this.uid2) {\n _this.removeTopRows(_this.uid3, _this.uid1, _this.uid2);\n _this.uid1 = _this.uid2 = _this.uid3 = undefined;\n }\n _this.lazyLoadHandler({\n data: e.result, count: e.count, level: level, index: args.rowIndex,\n isRowExist: false, isScroll: args.isScroll, up: false, rowIndex: args.cachedRowIndex\n });\n })\n .catch(function (e) { return _this.parent.renderModule.dataManagerFailure(e, { requestType: 'grouping' }); });\n }\n else {\n this.lazyLoadHandler({\n data: null, count: args.groupInfo.data.count, level: level, index: args.rowIndex,\n isRowExist: true, isScroll: args.isScroll, up: args.scrollUp, rowIndex: args.cachedRowIndex\n });\n }\n };\n GroupLazyLoadRenderer.prototype.scrollReset = function (top) {\n this.parent.getContent().firstElementChild.scrollTop = top ? this.parent.getContent().firstElementChild.scrollTop + top : 0;\n };\n GroupLazyLoadRenderer.prototype.updateCurrentViewData = function () {\n var records = [];\n this.getRows().filter(function (row) {\n if (row.isDataRow) {\n records[row.index] = row.data;\n }\n });\n this.parent.currentViewData = records.length ? records : this.parent.currentViewData;\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden */\n GroupLazyLoadRenderer.prototype.getGroupCache = function () {\n return this.groupCache;\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden */\n GroupLazyLoadRenderer.prototype.getRows = function () {\n return this.groupCache[this.parent.pageSettings.currentPage] || [];\n };\n /**\n * @returns {Element} returns the element\n * @hidden */\n GroupLazyLoadRenderer.prototype.getRowElements = function () {\n return [].slice.call(this.parent.getContent().getElementsByClassName(literals.row));\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.getRowByIndex = function (index) {\n var tr = [].slice.call(this.parent.getContent().getElementsByClassName(literals.row));\n var row;\n for (var i = 0; !isNullOrUndefined(index) && i < tr.length; i++) {\n if (tr[parseInt(i.toString(), 10)].getAttribute(literals.dataRowIndex) === index.toString()) {\n row = tr[parseInt(i.toString(), 10)];\n break;\n }\n }\n return row;\n };\n /**\n * Tucntion to set the column visibility\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var contentrows = this.getRows().filter(function (row) { return !row.isDetailRow; });\n for (var i = 0; i < columns.length; i++) {\n var column = columns[parseInt(i.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n this.setDisplayNone(gObj.getDataRows(), colIdx, displayVal, contentrows, idx);\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n };\n /**\n * Function to set display.\n *\n * @param {Object} tr - specifies the row object\n * @param {number} idx - specifies the index\n * @param {string} displayVal - specifies the display value\n * @param {Row[]} rows - specifies the array of rows\n * @param {number} oriIdx - specifies the index\n * @returns {void}\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.setDisplayNone = function (tr, idx, displayVal, rows, oriIdx) {\n if (!this.parent.groupSettings.columns.length) {\n setDisplayValue(tr, idx, displayVal, rows);\n }\n else {\n var keys = Object.keys(this.groupCache);\n for (var j = 0; j < keys.length; j++) {\n var uids = this.rowsByUid[keys[parseInt(j.toString(), 10)]];\n var idxs = Object.keys(uids);\n for (var i = 0; i < idxs.length; i++) {\n var tr_1 = this.parent.getContent()\n .querySelector('tr[data-uid=' + idxs[parseInt(i.toString(), 10)] + ']');\n var row = uids[idxs[parseInt(i.toString(), 10)]];\n if (row.isCaptionRow) {\n if (!this.captionModelGen.isEmpty()) {\n this.changeCaptionRow(row, tr_1, keys[parseInt(j.toString(), 10)]);\n }\n else {\n row.cells[row.indent + 1].colSpan = displayVal === '' ? row.cells[row.indent + 1].colSpan + 1\n : row.cells[row.indent + 1].colSpan - 1;\n if (tr_1) {\n tr_1.cells[row.indent + 1].colSpan = row.cells[row.indent + 1].colSpan;\n }\n }\n }\n if (row.isDataRow) {\n this.showAndHideCells(tr_1, idx, displayVal, false);\n row.cells[parseInt(oriIdx.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n if (!row.isCaptionRow && !row.isDataRow && isNullOrUndefined(row.indent)) {\n row.cells[parseInt(oriIdx.toString(), 10)].visible = displayVal === '' ? true : false;\n row.visible = row.cells.some(function (cell) { return cell.isDataCell && cell.visible; });\n this.showAndHideCells(tr_1, idx, displayVal, true, row);\n }\n }\n }\n }\n };\n GroupLazyLoadRenderer.prototype.changeCaptionRow = function (row, tr, index) {\n var capRow = row;\n var captionData = row.data;\n var data = this.groupGenerator.generateCaptionRow(captionData, capRow.indent, capRow.parentGid, undefined, capRow.tIndex, capRow.parentUid);\n data.uid = row.uid;\n data.isExpand = row.isExpand;\n data.lazyLoadCssClass = row.lazyLoadCssClass;\n this.rowsByUid[parseInt(index.toString(), 10)][row.uid] = data;\n this.groupCache[parseInt(index.toString(), 10)][this.objIdxByUid[parseInt(index.toString(), 10)][row.uid]] = data;\n if (tr) {\n var tbody = this.parent.getContentTable().querySelector(literals.tbody);\n tbody.replaceChild(this.rowRenderer.render(data, this.parent.getColumns()), tr);\n }\n };\n GroupLazyLoadRenderer.prototype.showAndHideCells = function (tr, idx, displayVal, isSummary, row) {\n if (tr) {\n var cls = isSummary ? 'td.e-summarycell' : 'td.e-rowcell';\n setStyleAttribute(tr.querySelectorAll(cls)[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr.querySelectorAll(cls)[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr.querySelectorAll(cls)[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if (isSummary) {\n if (row.visible && tr.classList.contains('e-hide')) {\n removeClass([tr], ['e-hide']);\n }\n else if (!row.visible) {\n addClass([tr], ['e-hide']);\n }\n }\n }\n };\n return GroupLazyLoadRenderer;\n}(ContentRender));\nexport { GroupLazyLoadRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('CheckBoxLabel') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n node.setAttribute('aria-description', elementDesc);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization\n && !this.parent.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr');\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n if (isFrozen && gObj.allowResizing) {\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector('.' + literals.table);\n if (tableName === 'movable' && !isNullOrUndefined(movableContent)) {\n table.style.width = movableContent.style.width;\n }\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[parseInt(index.toString(), 10)]) {\n var colFreezeMode = rows[0].cells[parseInt(index.toString(), 10)].column.getFreezeTableName();\n if (tableName === 'movable' && this.getStackedLockColsCount.length) {\n for (var j = 0, len = rows.length; j < len; j++) {\n if (frozenMode === 'Right') {\n rows[parseInt(j.toString(), 10)].cells.pop();\n }\n else {\n rows[parseInt(j.toString(), 10)].cells.shift();\n }\n }\n }\n else if ((colFreezeMode === 'movable' || (frozenMode === literals.leftRight &&\n colFreezeMode === literals.frozenRight))) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === literals.frozenLeft) {\n rows[0].cells[0].column.freeze = colFreezeMode === literals.frozenLeft ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === literals.frozenRight) {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n isTrue = this.ensureStackedFrozen(columns[parseInt(i.toString(), 10)].columns, tableName, isTrue);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n count = this.getFrozenColSpan(columns[parseInt(i.toString(), 10)].columns, tableName, count);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName\n && columns[parseInt(i.toString(), 10)].visible) {\n count++;\n }\n }\n return count;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup);\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (table) {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n if (!isVFTable) {\n this.setTable(table);\n }\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","import { isNullOrUndefined, addClass, extend, closest } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, alignFrozenEditForm, getMovableTbody, getFrozenRightTbody, setStyleAndAttributes } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar InlineEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - returns the IGrid\n */\n function InlineEditRender(parent) {\n this.parent = parent;\n }\n InlineEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n var tbody;\n var mTbody = getMovableTbody(this.parent);\n var frTbody = getFrozenRightTbody(this.parent);\n var isFrozenGrid = this.parent.isFrozenGrid();\n var isVirtualFrozen = isFrozenGrid && this.parent.enableColumnVirtualization && args.isScroll;\n if (this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top') {\n tbody = isVirtualFrozen ? this.parent.getMovableHeaderTbody() : this.parent.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = isVirtualFrozen ? this.parent.getMovableContentTbody() : this.parent.getContentTable().querySelector(literals.tbody);\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow' });\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (isFrozenGrid && !isVirtualFrozen) {\n var moveTbody = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frTbody_1 = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n (frTbody_1.firstElementChild).parentNode.removeChild(frTbody_1.firstElementChild);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(args.row, tbody.firstChild);\n }\n else {\n tbody.appendChild(args.row);\n }\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n if (isFrozenGrid && !isVirtualFrozen) {\n var mEle = this.renderMovableform(args.row, args);\n if (this.parent.editSettings.newRowPosition === 'Top') {\n mTbody.insertBefore(mEle, mTbody.firstChild);\n }\n else {\n mTbody.appendChild(mEle);\n }\n args.row.querySelector('.e-normaledit').setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.querySelector('.e-normaledit').setAttribute('colspan', '' + (this.parent.getVisibleColumns().length - this.parent.getVisibleFrozenColumns()));\n if (frTbody) {\n var frEle = this.renderFrozenRightForm(args.row, args);\n if (this.parent.editSettings.newRowPosition === 'Top') {\n frTbody.insertBefore(frEle, frTbody.firstChild);\n }\n else {\n frTbody.appendChild(frEle);\n }\n var colSpan = this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount();\n args.row.querySelector('.e-normaledit').setAttribute('colspan', colSpan + '');\n frEle.querySelector('.e-normaledit').setAttribute('colspan', '' + this.parent.getFrozenRightColumnsCount());\n }\n if (this.parent.height === 'auto') {\n this.parent.notify(events.frozenHeight, {});\n }\n }\n };\n InlineEditRender.prototype.renderFrozenRightForm = function (ele, args) {\n var frEle = ele.cloneNode(true);\n var form = args.frozenRightForm = frEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return frEle;\n }\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup).innerHTML;\n return frEle;\n };\n InlineEditRender.prototype.renderMovableform = function (ele, args) {\n var mEle = ele.cloneNode(true);\n var form = args.movableForm = mEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return mEle;\n }\n this.renderMovable(ele, mEle);\n mEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup).innerHTML;\n return mEle;\n };\n InlineEditRender.prototype.updateFreezeEdit = function (row, td) {\n td = td.concat([].slice.call(this.getFreezeRow(row).querySelectorAll('td.e-rowcell')));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n td = td.concat([].slice.call(this.getFreezeRightRow(row).querySelectorAll('td.e-rowcell')));\n }\n return td;\n };\n InlineEditRender.prototype.getFreezeRightRow = function (row) {\n var idx = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var frHdr = this.parent.getFrozenRightHeaderTbody();\n var frCont = this.parent.getFrozenRightContentTbody();\n if (fCont.contains(row) || fHdr.contains(row)) {\n return this.parent.getFrozenRightRowByIndex(idx);\n }\n else if (frCont.contains(row) || frHdr.contains(row)) {\n return this.parent.getRowByIndex(idx);\n }\n return row;\n };\n InlineEditRender.prototype.getFreezeRow = function (row) {\n if (this.parent.isFrozenGrid()) {\n var idx = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var mCont = this.parent.getMovableContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var mHdr = this.parent.getMovableHeaderTbody();\n if (fCont.contains(row) || fHdr.contains(row)) {\n return this.parent.getMovableRowByIndex(idx);\n }\n else if (mCont.contains(row) || mHdr.contains(row)) {\n return this.parent.getRowByIndex(idx);\n }\n }\n return row;\n };\n InlineEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n var isCustomFormValidation = args.isCustomFormValidation;\n var isScroll = args.isScroll;\n if (!isScroll && (closest(args.row, '.' + literals.movableContent) || closest(args.row, '.' + literals.movableHeader))) {\n args.row = this.getFreezeRow(args.row);\n }\n if (closest(args.row, '.e-frozen-right-content') || closest(args.row, '.e-frozen-right-header')) {\n args.row = this.getFreezeRightRow(args.row);\n }\n var isVirtualFrozen = this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization && isScroll;\n var tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n if (!isVirtualFrozen && !isCustomFormValidation) {\n tdElement = this.updateFreezeEdit(args.row, tdElement);\n }\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add(literals.editedRow);\n this.parent.editModule.checkLastRow(args.row, args);\n if (!isVirtualFrozen && !isCustomFormValidation) {\n this.refreshFreezeEdit(args.row, args);\n }\n };\n InlineEditRender.prototype.refreshFreezeEdit = function (row, args) {\n var td = row.firstChild;\n if (this.parent.getVisibleFrozenColumns() && this.parent.editSettings.template) {\n td.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent().querySelector('.' + literals.frozenHeader).\n querySelector(literals.colGroup).innerHTML;\n }\n var fCls;\n var cont;\n var idx = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n if (this.parent.isFrozenGrid()) {\n if (idx < this.parent.frozenRows) {\n cont = this.parent.getHeaderContent();\n fCls = '.' + literals.frozenHeader;\n }\n else {\n cont = this.parent.getContent();\n fCls = '.' + literals.frozenContent;\n }\n var mTd = td.cloneNode(true);\n var frTd = td.cloneNode(true);\n var form = args.movableForm = mTd.querySelector('form');\n if (this.parent.editSettings.template) {\n this.refreshEditForm(form, args.rowData);\n }\n var fRows = void 0;\n var frRows = void 0;\n if (cont.querySelector(fCls).contains(row)) {\n fRows = this.parent.getMovableRowByIndex(idx);\n this.updateFrozenCont(fRows, td, mTd);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, td, frTd);\n }\n }\n else {\n fRows = this.parent.getRowByIndex(idx);\n this.updateFrozenCont(fRows, mTd, td);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, frTd, td);\n }\n }\n fRows.appendChild(mTd);\n fRows.classList.add(literals.editedRow);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frRows.appendChild(frTd);\n frRows.classList.add(literals.editedRow);\n alignFrozenEditForm(args.frozenRightForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n alignFrozenEditForm(args.movableForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n };\n InlineEditRender.prototype.refreshEditForm = function (form, data) {\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, data, false);\n }\n };\n InlineEditRender.prototype.updateFrozenRightCont = function (row, ele, frEle) {\n row.innerHTML = '';\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup).innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount() + '');\n frEle.setAttribute('colspan', this.parent.getFrozenRightColumnsCount() + '');\n };\n InlineEditRender.prototype.updateFrozenCont = function (row, ele, mEle) {\n row.innerHTML = '';\n this.renderMovable(ele, mEle);\n mEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup).innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.setAttribute('colspan', this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length - this.parent.getVisibleFrozenColumns() + '');\n };\n InlineEditRender.prototype.renderRightFrozen = function (ele, frEle) {\n frEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[parseInt(i.toString(), 10)].getFreezeTableName() === literals.frozenRight) {\n var index = k - this.parent.getMovableColumnsCount();\n frEle.querySelector('tr').appendChild(ele.querySelector('tr').removeChild(ele.querySelector('tr').children[parseInt(index.toString(), 10)]));\n k--;\n }\n }\n };\n InlineEditRender.prototype.renderMovable = function (ele, mEle) {\n mEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = this.parent.isRowDragable() ? 1 : 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[parseInt(i.toString(), 10)].getFreezeTableName() === 'movable') {\n mEle.querySelector('tr').appendChild(ele.querySelector('tr')\n .removeChild(ele.querySelector('tr').children[parseInt(k.toString(), 10)]));\n k--;\n }\n }\n };\n // eslint-disable-next-line max-len\n InlineEditRender.prototype.getEditElement = function (elements, isEdit, tdElement, args, isFrozen) {\n var gObj = this.parent;\n var gLen = 0;\n var isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n var td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: {\n colspan: (gObj.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length - gObj.getVisibleFrozenColumns()\n + this.parent.getIndentCount()).toString()\n }\n });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n var table = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25', role: 'grid' } });\n table.appendChild(gObj.getContentTable().querySelector(literals.colGroup).cloneNode(true));\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var tr = this.parent.createElement('tr');\n var i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n var m = 0;\n i = 0;\n var isVirtualFrozen = gObj.isFrozenGrid() && gObj.enableColumnVirtualization && args.isScroll;\n var cols = args.isCustomFormValidation ? this.parent.columnModel : gObj.getColumns();\n while ((isEdit && m < tdElement.length && i < cols.length) || i < cols.length) {\n var span = isEdit ? tdElement[parseInt(m.toString(), 10)].getAttribute('colspan') : null;\n var col = cols[parseInt(i.toString(), 10)];\n if ((isVirtualFrozen && col.getFreezeTableName() !== 'movable')\n || (args.isCustomFormValidation && (col.commands || col.commandsTemplate || !col.field))) {\n i++;\n continue;\n }\n var td_1 = this.parent.createElement('td', {\n className: literals.rowCell, attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td_1.appendChild(elements[col.uid]);\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(td_1, { 'data-cell': col.headerText });\n if (i === 0) {\n td_1.classList.add('e-responsive-editcell');\n }\n }\n if (col.editType === 'booleanedit') {\n td_1.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td_1], 'e-unboundcell');\n }\n }\n else {\n td_1.classList.add('e-hide');\n }\n tr.appendChild(td_1);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n tbody.appendChild(tr);\n table.appendChild(tbody);\n form.appendChild(table);\n td.appendChild(form);\n return td;\n };\n InlineEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n InlineEditRender.prototype.appendChildren = function (form, data, isFrozen) {\n var _this = this;\n var dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n if (this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string') {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n // eslint-disable-next-line\n var setRules = function () {\n var cols = _this.parent.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[cols[parseInt(i.toString(), 10)].field] =\n cols[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n };\n return InlineEditRender;\n}());\nexport { InlineEditRender };\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n/**\n * MaskedTextBox base module\n */\nimport { EventHandler, isNullOrUndefined, merge, attributes, addClass, removeClass, Browser, extend } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nvar ERROR = 'e-error';\nvar INPUTGROUP = 'e-input-group';\nvar FLOATINPUT = 'e-float-input';\nvar UTILMASK = 'e-utility-mask';\nvar TOPLABEL = 'e-label-top';\nvar BOTTOMLABEL = 'e-label-bottom';\n/**\n * @hidden\n * Built-in masking elements collection.\n */\nexport var regularExpressions = {\n '0': '[0-9]',\n '9': '[0-9 ]',\n '#': '[0-9 +-]',\n 'L': '[A-Za-z]',\n '?': '[A-Za-z ]',\n '&': '[^\\x7f ]+',\n 'C': '[^\\x7f]+',\n 'A': '[A-Za-z0-9]',\n 'a': '[A-Za-z0-9 ]'\n};\n/**\n * Generate required masking elements to the MaskedTextBox from user mask input.\n *\n * @hidden\n */\nexport function createMask() {\n attributes(this.element, {\n 'role': 'textbox', 'autocomplete': 'off', 'autocapitalize': 'off',\n 'spellcheck': 'false', 'aria-live': 'assertive'\n });\n if (this.mask) {\n var splitMask = this.mask.split(']');\n for (var i = 0; i < splitMask.length; i++) {\n if (splitMask[i][splitMask[i].length - 1] === '\\\\') {\n splitMask[i] = splitMask[i] + ']';\n var splitInnerMask = splitMask[i].split('[');\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j][splitInnerMask[j].length - 1] === '\\\\') {\n splitInnerMask[j] = splitInnerMask[j] + '[';\n }\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n else {\n var splitInnerMask = splitMask[i].split('[');\n if (splitInnerMask.length > 1) {\n var chkSpace = false;\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j] === '\\\\') {\n this.customRegExpCollec.push('[');\n this.hiddenMask += splitInnerMask[j] + '[';\n }\n else if (splitInnerMask[j] === '') {\n chkSpace = true;\n }\n else if ((splitInnerMask[j] !== '' && chkSpace) || j === splitInnerMask.length - 1) {\n this.customRegExpCollec.push('[' + splitInnerMask[j] + ']');\n this.hiddenMask += this.promptChar;\n chkSpace = false;\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[0]);\n }\n }\n }\n this.escapeMaskValue = this.hiddenMask;\n this.promptMask = this.hiddenMask.replace(/[09?LCAa#&]/g, this.promptChar);\n if (!isNullOrUndefined(this.customCharacters)) {\n for (var i = 0; i < this.promptMask.length; i++) {\n if (!isNullOrUndefined(this.customCharacters[this.promptMask[i]])) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n this.promptMask = this.promptMask.replace(new RegExp(this.promptMask[i], 'g'), this.promptChar);\n }\n }\n }\n var escapeNumber = 0;\n if (this.hiddenMask.match(new RegExp(/\\\\/))) {\n for (var i = 0; i < this.hiddenMask.length; i++) {\n var j = 0;\n if (i >= 1) {\n j = i;\n }\n escapeNumber = this.hiddenMask.length - this.promptMask.length;\n j = j - escapeNumber;\n if ((i > 0 && this.hiddenMask[i - 1] !== '\\\\') && (this.hiddenMask[i] === '>' ||\n this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|')) {\n this.promptMask = this.promptMask.substring(0, j) +\n this.promptMask.substring((i + 1) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) +\n this.escapeMaskValue.substring((i + 1) - escapeNumber, this.escapeMaskValue.length);\n }\n if (this.hiddenMask[i] === '\\\\') {\n this.promptMask = this.promptMask.substring(0, j) + this.hiddenMask[i + 1] +\n this.promptMask.substring((i + 2) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) + this.escapeMaskValue[i + 1] +\n this.escapeMaskValue.substring((i + 2) - escapeNumber, this.escapeMaskValue.length);\n }\n }\n }\n else {\n this.promptMask = this.promptMask.replace(/[>|<]/g, '');\n this.escapeMaskValue = this.hiddenMask.replace(/[>|<]/g, '');\n }\n attributes(this.element, { 'aria-invalid': 'false' });\n }\n}\n/**\n * Apply mask ability with masking elements to the MaskedTextBox.\n *\n * @hidden\n */\nexport function applyMask() {\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, this.value);\n}\n/**\n * To wire required events to the MaskedTextBox.\n *\n * @hidden\n */\nexport function wireEvents() {\n EventHandler.add(this.element, 'keydown', maskInputKeyDownHandler, this);\n EventHandler.add(this.element, 'keypress', maskInputKeyPressHandler, this);\n EventHandler.add(this.element, 'keyup', maskInputKeyUpHandler, this);\n EventHandler.add(this.element, 'input', maskInputHandler, this);\n EventHandler.add(this.element, 'focus', maskInputFocusHandler, this);\n EventHandler.add(this.element, 'blur', maskInputBlurHandler, this);\n EventHandler.add(this.element, 'paste', maskInputPasteHandler, this);\n EventHandler.add(this.element, 'cut', maskInputCutHandler, this);\n EventHandler.add(this.element, 'drop', maskInputDropHandler, this);\n EventHandler.add(this.element, 'mousedown', maskInputMouseDownHandler, this);\n EventHandler.add(this.element, 'mouseup', maskInputMouseUpHandler, this);\n if (this.enabled) {\n bindClearEvent.call(this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', resetFormHandler, this);\n }\n }\n}\n/**\n * To unwire events attached to the MaskedTextBox.\n *\n * @hidden\n */\nexport function unwireEvents() {\n EventHandler.remove(this.element, 'keydown', maskInputKeyDownHandler);\n EventHandler.remove(this.element, 'keypress', maskInputKeyPressHandler);\n EventHandler.remove(this.element, 'keyup', maskInputKeyUpHandler);\n EventHandler.remove(this.element, 'input', maskInputHandler);\n EventHandler.remove(this.element, 'focus', maskInputFocusHandler);\n EventHandler.remove(this.element, 'blur', maskInputBlurHandler);\n EventHandler.remove(this.element, 'paste', maskInputPasteHandler);\n EventHandler.remove(this.element, 'cut', maskInputCutHandler);\n EventHandler.remove(this.element, 'mousedown', maskInputMouseDownHandler);\n EventHandler.remove(this.element, 'mouseup', maskInputMouseUpHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', resetFormHandler);\n }\n}\n/**\n * To bind required events to the MaskedTextBox clearButton.\n *\n * @hidden\n */\nexport function bindClearEvent() {\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown touchstart', resetHandler, this);\n }\n}\nfunction resetHandler(e) {\n e.preventDefault();\n if (!this.inputObj.clearButton.classList.contains('e-clear-icon-hide') || (this.inputObj.container.classList.contains('e-static-clear'))) {\n clear.call(this, e);\n this.value = '';\n }\n}\nfunction clear(event) {\n var value = this.element.value;\n setElementValue.call(this, this.promptMask);\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n triggerMaskChangeEvent.call(this, event, value);\n this.element.setSelectionRange(0, 0);\n}\nfunction resetFormHandler() {\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n setElementValue.call(this, this.promptMask);\n }\n else {\n this.value = this.initInputValue;\n }\n}\n/**\n * To get masked value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function unstrippedValue(element) {\n return element.value;\n}\n/**\n * To extract raw value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function strippedValue(element, maskValues) {\n var value = '';\n var k = 0;\n var checkMask = false;\n var maskValue = (!isNullOrUndefined(maskValues)) ? maskValues : (!isNullOrUndefined(element) &&\n !isNullOrUndefined(this)) ? element.value : maskValues;\n if (maskValue !== this.promptMask) {\n for (var i = 0; i < this.customRegExpCollec.length; i++) {\n if (checkMask) {\n checkMask = false;\n }\n if (this.customRegExpCollec[k] === '>' || this.customRegExpCollec[k] === '<' ||\n this.customRegExpCollec[k] === '|' || this.customRegExpCollec[k] === '\\\\') {\n --i;\n checkMask = true;\n }\n if (!checkMask) {\n if ((maskValue[i] !== this.promptChar) && (!isNullOrUndefined(this.customRegExpCollec[k]) &&\n ((this._callPasteHandler || !isNullOrUndefined(this.regExpCollec[this.customRegExpCollec[k]])) ||\n (this.customRegExpCollec[k].length > 2 && this.customRegExpCollec[k][0] === '[' &&\n this.customRegExpCollec[k][this.customRegExpCollec[k].length - 1] === ']') ||\n (!isNullOrUndefined(this.customCharacters) &&\n (!isNullOrUndefined(this.customCharacters[this.customRegExpCollec[k]]))))) && (maskValue !== '')) {\n value += maskValue[i];\n }\n }\n ++k;\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n value = maskValue;\n }\n return value;\n}\nfunction pushIntoRegExpCollec(value) {\n for (var k = 0; k < value.length; k++) {\n this.hiddenMask += value[k];\n if (value[k] !== '\\\\') {\n this.customRegExpCollec.push(value[k]);\n }\n }\n}\nexport function maskInputMouseDownHandler() {\n this.isClicked = true;\n}\nexport function maskInputMouseUpHandler() {\n this.isClicked = false;\n}\nexport function maskInputFocusHandler(event) {\n var _this = this;\n var inputElement = this.element;\n var startIndex = 0;\n var modelValue = strippedValue.call(this, inputElement);\n var toAllowForward = false;\n var toAllowBackward = false;\n var eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n if (!this.isClicked) {\n triggerFocus.call(this, eventArgs, inputElement);\n }\n if (this.mask) {\n if (!(!(modelValue === null || modelValue === '') || this.floatLabelType === 'Always' ||\n this.placeholder === null || this.placeholder === '')) {\n inputElement.value = this.promptMask;\n }\n setTimeout(function () {\n if (inputElement.selectionStart === _this.promptMask.length ||\n inputElement.value[inputElement.selectionStart] === _this.promptChar) {\n toAllowForward = true;\n }\n else {\n for (var i = inputElement.selectionStart; i < _this.promptMask.length; i++) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowForward = false;\n break;\n }\n }\n else {\n toAllowForward = true;\n break;\n }\n }\n }\n });\n setTimeout(function () {\n var backSelectionStart = inputElement.selectionStart - 1;\n if (backSelectionStart === _this.promptMask.length - 1 ||\n inputElement.value[backSelectionStart] === _this.promptChar) {\n toAllowBackward = true;\n }\n else {\n for (var i = backSelectionStart; i >= 0; i--) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowBackward = false;\n break;\n }\n }\n else {\n toAllowBackward = true;\n break;\n }\n }\n }\n });\n if ((this.isClicked || (this.floatLabelType !== 'Always' &&\n ((modelValue === null || modelValue === '') &&\n (this.placeholder !== null && this.placeholder !== ''))))) {\n for (startIndex = 0; startIndex < this.promptMask.length; startIndex++) {\n if (inputElement.value[startIndex] === this.promptChar) {\n setTimeout(function () {\n if (toAllowForward || toAllowBackward) {\n inputElement.selectionEnd = startIndex;\n inputElement.selectionStart = startIndex;\n }\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: _this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(_this.inputObj) ? _this.inputObj.container : _this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(_this, eventArgs, inputElement);\n }, 110);\n break;\n }\n }\n if (isNullOrUndefined(inputElement.value.match(escapeRegExp(this.promptChar)))) {\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(this, eventArgs, inputElement);\n }\n this.isClicked = false;\n }\n }\n}\nexport function triggerFocus(eventArgs, inputElement) {\n this.trigger('focus', eventArgs, function (eventArgs) {\n inputElement.selectionStart = eventArgs.selectionStart;\n inputElement.selectionEnd = eventArgs.selectionEnd;\n });\n}\nexport function escapeRegExp(text) {\n return !isNullOrUndefined(text) ? text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&') : text;\n}\nexport function maskInputBlurHandler(event) {\n this.blurEventArgs = {\n event: event,\n value: this.value,\n maskedValue: this.element.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj\n };\n this.trigger('blur', this.blurEventArgs);\n if (this.mask) {\n this.isFocus = false;\n if (this.placeholder && this.element.value === this.promptMask && this.floatLabelType !== 'Always') {\n setElementValue.call(this, '');\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.floatLabelType === 'Auto' && !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL)) {\n removeClass([labelElement], TOPLABEL);\n }\n }\n }\n}\nfunction maskInputPasteHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var sIndex_1 = this.element.selectionStart;\n var eIndex_1 = this.element.selectionEnd;\n var oldValue_1 = this.element.value;\n setElementValue.call(this, '');\n this._callPasteHandler = true;\n setTimeout(function () {\n var value = _this.element.value.replace(/ /g, '');\n if (_this.redoCollec.length > 0 && _this.redoCollec[0].value === _this.element.value) {\n value = strippedValue.call(_this, _this.element);\n }\n setElementValue.call(_this, oldValue_1);\n _this.element.selectionStart = sIndex_1;\n _this.element.selectionEnd = eIndex_1;\n var i = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i], false, null);\n ++i;\n } while (i < value.length);\n _this.maskKeyPress = false;\n _this._callPasteHandler = false;\n if (_this.element.value === oldValue_1) {\n var i_1 = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i_1], false, null);\n ++i_1;\n } while (i_1 < value.length);\n _this.maskKeyPress = false;\n }\n else {\n triggerMaskChangeEvent.call(_this, event, oldValue_1);\n }\n }, 1);\n }\n}\nfunction maskInputCutHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var preValue_1 = this.element.value;\n var sIndex_2 = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd });\n var value_1 = this.element.value.substring(0, sIndex_2) + this.promptMask.substring(sIndex_2, eIndex) +\n this.element.value.substring(eIndex);\n setTimeout(function () {\n setElementValue.call(_this, value_1);\n _this.element.selectionStart = _this.element.selectionEnd = sIndex_2;\n if (_this.element.value !== preValue_1) {\n triggerMaskChangeEvent.call(_this, event, null);\n }\n }, 0);\n }\n}\nexport function maskInputDropHandler(event) {\n event.preventDefault();\n}\nfunction maskInputHandler(event) {\n if (Browser.isIE === true && this.element.value === '' && this.floatLabelType === 'Never') {\n return;\n }\n var eventArgs = { ctrlKey: false, keyCode: 229 };\n extend(event, eventArgs);\n if (this.mask) {\n if (this.element.value === '') {\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (!this._callPasteHandler) {\n removeMaskInputValues.call(this, event);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var value = this.element.value.substring(startIndex - addedValues, startIndex);\n this.maskKeyPress = false;\n var i = 0;\n do {\n validateValue.call(this, value[i], event.ctrlKey, event);\n ++i;\n } while (i < value.length);\n if (this.element.value !== this.preEleVal) {\n triggerMaskChangeEvent.call(this, event, null);\n }\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (val === '') {\n setElementValue.call(this, this.promptMask);\n this.element.setSelectionRange(0, 0);\n }\n }\n}\nfunction maskInputKeyDownHandler(event) {\n if (this.mask && !this.readonly) {\n if (event.keyCode !== 229) {\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n event.preventDefault();\n }\n removeMaskInputValues.call(this, event);\n }\n var startValue = this.element.value;\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n var collec = void 0;\n if (event.keyCode === 90 && this.undoCollec.length > 0 && startValue !== this.undoCollec[this.undoCollec.length - 1].value) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.undoCollec.splice(this.undoCollec.length - 1, 1);\n }\n else if (event.keyCode === 89 && this.redoCollec.length > 0 && startValue !== this.redoCollec[0].value) {\n collec = this.redoCollec[0];\n this.undoCollec.push({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.redoCollec.splice(0, 1);\n }\n }\n }\n}\nexport function mobileRemoveFunction() {\n var collec;\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n collec = this.redoCollec[0];\n setElementValue.call(this, collec.value);\n if ((collec.startIndex - sIndex) === 1) {\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n }\n else {\n this.element.selectionStart = sIndex + 1;\n this.element.selectionEnd = eIndex + 1;\n }\n }\n else {\n setElementValue.call(this, this.promptMask);\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n }\n}\nfunction autoFillMaskInputValues(isRemove, oldEventVal, event) {\n if (event.type === 'input') {\n isRemove = false;\n oldEventVal = this.element.value;\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, oldEventVal);\n }\n return isRemove;\n}\nfunction removeMaskInputValues(event) {\n var isRemove = false;\n var oldEventVal;\n var isDeleted = false;\n if (this.element.value.length < this.promptMask.length) {\n isRemove = true;\n oldEventVal = this.element.value;\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n mobileRemoveFunction.call(this);\n }\n if (this.element.value.length >= this.promptMask.length && event.type === 'input') {\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n }\n var initStartIndex = this.element.selectionStart;\n var initEndIndex = this.element.selectionEnd;\n var startIndex = this.element.selectionStart;\n var endIndex = this.element.selectionEnd;\n var maskValue = this.hiddenMask.replace(/[>|\\\\<]/g, '');\n var curMask = maskValue[startIndex - 1];\n var deleteEndIndex = this.element.selectionEnd;\n if (isRemove || event.keyCode === 8 || event.keyCode === 46) {\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: endIndex });\n var multipleDel = false;\n var preValue = this.element.value;\n if (startIndex > 0 || ((event.keyCode === 8 || event.keyCode === 46) && startIndex < this.element.value.length\n && ((this.element.selectionEnd - startIndex) !== this.element.value.length))) {\n var index = startIndex;\n if (startIndex !== endIndex) {\n startIndex = endIndex;\n if (event.keyCode === 46) {\n multipleDel = true;\n }\n }\n else if (event.keyCode === 46) {\n ++index;\n }\n else {\n --index;\n }\n for (var k = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? k > index : k < index; (event.keyCode === 8 || isRemove || multipleDel) ? k-- : k++) {\n for (var i = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? i > 0 : i < this.element.value.length; (event.keyCode === 8 || isRemove || multipleDel) ? i-- : i++) {\n var sIndex = void 0;\n if (((event.keyCode === 8 || multipleDel) && ((initStartIndex !== initEndIndex && initStartIndex !== startIndex) ||\n (initStartIndex === initEndIndex))) || isRemove) {\n curMask = maskValue[i - 1];\n sIndex = startIndex - 1;\n }\n else {\n curMask = maskValue[i];\n sIndex = startIndex;\n ++startIndex;\n }\n var oldValue = this.element.value[sIndex];\n if ((isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && (!isNullOrUndefined(this.customCharacters)\n && isNullOrUndefined(this.customCharacters[\"\" + curMask]))\n && ((this.hiddenMask[sIndex] !== this.promptChar && this.customRegExpCollec[sIndex][0] !== '['\n && this.customRegExpCollec[sIndex][this.customRegExpCollec[sIndex].length - 1] !== ']')))\n || (this.promptMask[sIndex] !== this.promptChar && isNullOrUndefined(this.customCharacters))) {\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n ++this.element.selectionStart;\n }\n }\n else {\n var value = this.element.value;\n var prompt_1 = this.promptChar;\n var elementValue = value.substring(0, sIndex) + prompt_1 + value.substring(startIndex, value.length);\n setElementValue.call(this, elementValue);\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n sIndex++;\n }\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n isDeleted = true;\n }\n startIndex = this.element.selectionStart;\n if ((!isDeleted && event.keyCode === 8) || multipleDel || (!isDeleted && !(event.keyCode === 46))) {\n sIndex = startIndex - 1;\n }\n else {\n sIndex = startIndex;\n isDeleted = false;\n }\n oldValue = this.element.value[sIndex];\n if (((initStartIndex !== initEndIndex) && (this.element.selectionStart === initStartIndex))\n || (this.promptMask[sIndex] === this.promptChar) || ((oldValue !== this.promptMask[sIndex]) &&\n (this.promptMask[sIndex] !== this.promptChar) && !isNullOrUndefined(this.customCharacters))) {\n break;\n }\n }\n }\n }\n if (event.keyCode === 46 && multipleDel && isDeleted) {\n this.element.selectionStart = this.element.selectionEnd = deleteEndIndex;\n }\n if (this.element.selectionStart === 0 && (this.element.selectionEnd === this.element.value.length)) {\n setElementValue.call(this, this.promptMask);\n event.preventDefault();\n this.element.selectionStart = this.element.selectionEnd = startIndex;\n }\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n if (this.element.value !== preValue) {\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n}\nfunction maskInputKeyPressHandler(event) {\n if (this.mask && !this.readonly) {\n var oldValue = this.element.value;\n if (!(event.ctrlKey || event.metaKey) || ((event.ctrlKey || event.metaKey) && event.code !== 'KeyA' && event.code !== 'KeyY'\n && event.code !== 'KeyZ' && event.code !== 'KeyX' && event.code !== 'KeyC' && event.code !== 'KeyV')) {\n this.maskKeyPress = true;\n var key = event.key;\n if (key === 'Spacebar') {\n key = String.fromCharCode(event.keyCode);\n }\n if (!key) {\n this.isIosInvalid = true;\n validateValue.call(this, String.fromCharCode(event.keyCode), event.ctrlKey, event);\n event.preventDefault();\n this.isIosInvalid = false;\n }\n else if (key && key.length === 1) {\n validateValue.call(this, key, event.ctrlKey, event);\n event.preventDefault();\n }\n if (event.keyCode === 32 && key === ' ' && this.promptChar === ' ') {\n this.element.selectionStart = this.element.selectionEnd = this.element.selectionStart - key.length;\n }\n }\n if (this.element.value !== oldValue) {\n triggerMaskChangeEvent.call(this, event, oldValue);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction triggerMaskChangeEvent(event, oldValue) {\n var prevOnChange = this.isProtectedOnChange;\n if (!isNullOrUndefined(this.changeEventArgs) && !this.isInitial) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.element.value, maskedValue: this.element.value, isInteraction: false, isInteracted: false };\n if (this.mask) {\n this.changeEventArgs.value = strippedValue.call(this, this.element);\n }\n if (!isNullOrUndefined(event)) {\n this.changeEventArgs.isInteracted = true;\n this.changeEventArgs.isInteraction = true;\n this.changeEventArgs.event = event;\n }\n this.isProtectedOnChange = true;\n this.value = this.changeEventArgs.value;\n this.isProtectedOnChange = prevOnChange;\n merge(eventArgs, this.changeEventArgs);\n /* istanbul ignore next */\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n this.preEleVal = this.element.value;\n this.prevValue = strippedValue.call(this, this.element);\n}\nfunction maskInputKeyUpHandler(event) {\n if (this.mask && !this.readonly) {\n var collec = void 0;\n if (!this.maskKeyPress && event.keyCode === 229) {\n var oldEventVal = void 0;\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var val_1 = this.element.value.substring(startIndex - addedValues, startIndex);\n if (this.undoCollec.length > 0) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n var startIndex_1 = this.element.selectionStart;\n oldEventVal = collec.value;\n var oldVal = collec.value.substring(startIndex_1 - addedValues, startIndex_1);\n collec = this.redoCollec[0];\n val_1 = val_1.trim();\n var isSpace = Browser.isAndroid && val_1 === '';\n if (!isSpace && oldVal !== val_1 && collec.value.substring(startIndex_1 - addedValues, startIndex_1) !== val_1) {\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n else if (isSpace) {\n preventUnsupportedValues.call(this, event, startIndex_1 - 1, this.element.selectionEnd - 1, val_1, event.ctrlKey, false);\n }\n }\n else {\n oldEventVal = this.promptMask;\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n this.maskKeyPress = false;\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n else {\n removeMaskError.call(this);\n }\n var val = strippedValue.call(this, this.element);\n if (!((this.element.selectionStart === 0) && (this.promptMask === this.element.value) && val === '')\n || (val === '' && this.value !== val)) {\n this.prevValue = val;\n this.value = val;\n }\n }\n else {\n triggerMaskChangeEvent.call(this, event);\n }\n if (this.element.selectionStart === 0 && this.element.selectionEnd === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var temp_1 = this.element;\n setTimeout(function () {\n temp_1.setSelectionRange(0, 0);\n }, 0);\n }\n}\nfunction mobileSwipeCheck(key) {\n if (key.length > 1 && ((this.promptMask.length + key.length) < this.element.value.length)) {\n var elementValue = this.redoCollec[0].value.substring(0, this.redoCollec[0].startIndex) + key +\n this.redoCollec[0].value.substring(this.redoCollec[0].startIndex, this.redoCollec[0].value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = this.redoCollec[0].startIndex + key.length;\n }\n this.element.selectionStart = this.element.selectionStart - key.length;\n this.element.selectionEnd = this.element.selectionEnd - key.length;\n}\nfunction mobileValidation(key) {\n if (!this.maskKeyPress) {\n mobileSwipeCheck.call(this, key);\n }\n}\nfunction validateValue(key, isCtrlKey, event) {\n mobileValidation.call(this, key);\n if (isNullOrUndefined(this) || isNullOrUndefined(key)) {\n return;\n }\n var startIndex = this.element.selectionStart;\n var initStartIndex = startIndex;\n var curMask;\n var allowText = false;\n var value = this.element.value;\n var eventOldVal;\n var prevSupport = false;\n var isEqualVal = false;\n for (var k = 0; k < key.length; k++) {\n var keyValue = key[k];\n startIndex = this.element.selectionStart;\n if (!this.maskKeyPress && initStartIndex === startIndex) {\n startIndex = startIndex + k;\n }\n if ((!this.maskKeyPress || startIndex < this.promptMask.length)) {\n for (var i = startIndex; i < this.promptMask.length; i++) {\n var maskValue = this.escapeMaskValue;\n curMask = maskValue[startIndex];\n if (this.hiddenMask[startIndex] === '\\\\' && this.hiddenMask[startIndex + 1] === key) {\n isEqualVal = true;\n }\n if ((isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && (isNullOrUndefined(this.customCharacters)\n || (!isNullOrUndefined(this.customCharacters) && isNullOrUndefined(this.customCharacters[\"\" + curMask])))\n && ((this.hiddenMask[startIndex] !== this.promptChar && this.customRegExpCollec[startIndex][0] !== '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] !== ']')))\n || ((this.promptMask[startIndex] !== this.promptChar) && isNullOrUndefined(this.customCharacters))\n || (this.promptChar === curMask && this.escapeMaskValue === this.mask)) {\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n startIndex = this.element.selectionStart;\n curMask = this.hiddenMask[startIndex];\n }\n }\n if (!isNullOrUndefined(this.customCharacters) && !isNullOrUndefined(this.customCharacters[\"\" + curMask])) {\n var customValStr = this.customCharacters[\"\" + curMask];\n var customValArr = customValStr.split(',');\n for (var i = 0; i < customValArr.length; i++) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n if (keyValue.match(new RegExp('[' + customValArr[i] + ']'))) {\n allowText = true;\n break;\n }\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n }\n else if (!isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && keyValue.match(new RegExp(this.regExpCollec[\"\" + curMask]))\n && this.promptMask[startIndex] === this.promptChar) {\n allowText = true;\n }\n else if (this.promptMask[startIndex] === this.promptChar && this.customRegExpCollec[startIndex][0] === '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] === ']'\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n && keyValue.match(new RegExp(this.customRegExpCollec[startIndex]))) {\n allowText = true;\n }\n if ((!this.maskKeyPress || startIndex < this.hiddenMask.length) && allowText) {\n if (k === 0) {\n if (this.maskKeyPress) {\n this.undoCollec.push({ value: value, startIndex: startIndex, endIndex: startIndex });\n }\n else {\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n eventOldVal = this.redoCollec[0].value;\n setElementValue.call(this, eventOldVal);\n this.undoCollec.push(this.redoCollec[0]);\n }\n else {\n this.undoCollec.push({ value: this.promptMask, startIndex: startIndex, endIndex: startIndex });\n eventOldVal = this.promptMask;\n setElementValue.call(this, eventOldVal);\n }\n this.element.selectionStart = sIndex;\n this.element.selectionEnd = eIndex;\n }\n }\n startIndex = this.element.selectionStart;\n applySupportedValues.call(this, event, startIndex, keyValue, eventOldVal, isEqualVal);\n prevSupport = true;\n if (k === key.length - 1) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n allowText = false;\n }\n else {\n startIndex = this.element.selectionStart;\n preventUnsupportedValues.call(this, event, startIndex, initStartIndex, key, isCtrlKey, prevSupport);\n }\n if (k === key.length - 1 && !allowText) {\n if (!Browser.isAndroid || (Browser.isAndroid && startIndex < this.promptMask.length)) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n }\n }\n else {\n if (key.length === 1 && !isCtrlKey && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n }\n }\n}\nfunction applySupportedValues(event, startIndex, keyValue, eventOldVal, isEqualVal) {\n if (this.hiddenMask.length > this.promptMask.length) {\n keyValue = changeToLowerUpperCase.call(this, keyValue, this.element.value);\n }\n if (!isEqualVal) {\n var value = this.element.value;\n var elementValue = value.substring(0, startIndex) + keyValue + value.substring(startIndex + 1, value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n }\n}\nfunction preventUnsupportedValues(event, sIdx, idx, key, ctrl, chkSupport) {\n if (!this.maskKeyPress) {\n var value = this.element.value;\n if (sIdx >= this.promptMask.length) {\n setElementValue.call(this, value.substring(0, sIdx));\n }\n else {\n if (idx === sIdx) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx + 1, value.length));\n }\n else {\n if (this.promptMask.length === this.element.value.length) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx, value.length));\n }\n else {\n setElementValue.call(this, value.substring(0, idx) + value.substring(idx + 1, value.length));\n }\n }\n this.element.selectionStart = this.element.selectionEnd = (chkSupport ||\n this.element.value[idx] !== this.promptChar) ? sIdx : idx;\n }\n addMaskErrorClass.call(this);\n }\n if (key.length === 1 && !ctrl && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n}\nfunction addMaskErrorClass() {\n var _this = this;\n var parentElement = this.element.parentNode;\n var timer = 200;\n if (parentElement.classList.contains(INPUTGROUP) || parentElement.classList.contains(FLOATINPUT)) {\n addClass([parentElement], ERROR);\n }\n else {\n addClass([this.element], ERROR);\n }\n if (this.isIosInvalid === true) {\n timer = 400;\n }\n attributes(this.element, { 'aria-invalid': 'true' });\n setTimeout(function () {\n if (!_this.maskKeyPress) {\n removeMaskError.call(_this);\n }\n }, timer);\n}\nfunction removeMaskError() {\n var parentElement = this.element.parentNode;\n if (!isNullOrUndefined(parentElement)) {\n removeClass([parentElement], ERROR);\n }\n removeClass([this.element], ERROR);\n attributes(this.element, { 'aria-invalid': 'false' });\n}\n/**\n * Validates user input using masking elements '<' , '>' and '|'.\n *\n * @hidden\n */\nfunction changeToLowerUpperCase(key, value) {\n var promptMask;\n var i;\n var curVal = value;\n var caseCount = 0;\n for (i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === '\\\\') {\n promptMask = curVal.substring(0, i) + '\\\\' + curVal.substring(i, curVal.length);\n }\n if (this.hiddenMask[i] === '>' || this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|') {\n if (this.hiddenMask[i] !== curVal[i]) {\n promptMask = curVal.substring(0, i) + this.hiddenMask[i] + curVal.substring(i, curVal.length);\n }\n ++caseCount;\n }\n if (promptMask) {\n if (((promptMask[i] === this.promptChar) && (i > this.element.selectionStart)) ||\n (this.element.value.indexOf(this.promptChar) < 0 && (this.element.selectionStart + caseCount) === i)) {\n caseCount = 0;\n break;\n }\n curVal = promptMask;\n }\n }\n while (i >= 0 && promptMask) {\n if (i === 0 || promptMask[i - 1] !== '\\\\') {\n if (promptMask[i] === '>') {\n key = key.toUpperCase();\n break;\n }\n else if (promptMask[i] === '<') {\n key = key.toLowerCase();\n break;\n }\n else if (promptMask[i] === '|') {\n break;\n }\n }\n --i;\n }\n return key;\n}\n/**\n * To set updated values in the MaskedTextBox.\n *\n * @hidden\n */\nexport function setMaskValue(val) {\n if (this.mask && val !== undefined && (this.prevValue === undefined || this.prevValue !== val)) {\n this.maskKeyPress = true;\n setElementValue.call(this, this.promptMask);\n if (val !== '' && !(val === null && this.floatLabelType === 'Never' && this.placeholder)) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n if (val !== null) {\n for (var i = 0; i < val.length; i++) {\n validateValue.call(this, val[i], false, null);\n }\n }\n var newVal = strippedValue.call(this, this.element);\n this.prevValue = newVal;\n this.value = newVal;\n triggerMaskChangeEvent.call(this, null, null);\n this.maskKeyPress = false;\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.element.value === this.promptMask && this.floatLabelType === 'Auto' && this.placeholder &&\n !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL) && !this.isFocus) {\n removeClass([labelElement], TOPLABEL);\n addClass([labelElement], BOTTOMLABEL);\n setElementValue.call(this, '');\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n}\n/**\n * To set updated values in the input element.\n *\n * @hidden\n */\nexport function setElementValue(val, element) {\n if (!this.isFocus && this.floatLabelType === 'Auto' && this.placeholder && isNullOrUndefined(this.value)) {\n val = '';\n }\n var value = strippedValue.call(this, (element ? element : this.element), val);\n if (value === null || value === '') {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, false);\n if (this.showClearButton) {\n this.inputObj.clearButton.classList.add('e-clear-icon-hide');\n }\n }\n else {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n }\n}\n/**\n * Provide mask support to input textbox through utility method.\n *\n * @hidden\n */\nexport function maskInput(args) {\n var inputEle = getMaskInput(args);\n applyMask.call(inputEle);\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (args.mask) {\n unwireEvents.call(inputEle);\n wireEvents.call(inputEle);\n }\n}\nfunction getMaskInput(args) {\n addClass([args.element], UTILMASK);\n var inputEle = {\n element: args.element,\n mask: args.mask,\n promptMask: '',\n hiddenMask: '',\n escapeMaskValue: '',\n promptChar: args.promptChar ? (args.promptChar.length > 1) ? args.promptChar = args.promptChar[0]\n : args.promptChar : '_',\n value: args.value ? args.value : null,\n regExpCollec: regularExpressions,\n customRegExpCollec: [],\n customCharacters: args.customCharacters,\n undoCollec: [],\n redoCollec: [],\n maskKeyPress: false,\n prevValue: ''\n };\n createMask.call(inputEle);\n return inputEle;\n}\n/**\n * Gets raw value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getVal(args) {\n return strippedValue.call(getUtilMaskEle(args), args.element);\n}\n/**\n * Gets masked value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getMaskedVal(args) {\n return unstrippedValue.call(getUtilMaskEle(args), args.element);\n}\nfunction getUtilMaskEle(args) {\n var inputEle;\n if (!isNullOrUndefined(args) && args.element.classList.contains(UTILMASK)) {\n inputEle = getMaskInput(args);\n }\n return inputEle;\n}\n/**\n * Arguments to perform undo and redo functionalities.\n *\n * @hidden\n */\nvar MaskUndo = /** @class */ (function () {\n function MaskUndo() {\n }\n return MaskUndo;\n}());\nexport { MaskUndo };\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar maskUndo = new MaskUndo();\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Event, Property, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, setValue, addClass, detach } from '@syncfusion/ej2-base';\nimport { removeClass, Browser, closest } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nimport { regularExpressions, createMask, applyMask, wireEvents, unwireEvents, unstrippedValue, strippedValue } from '../base/index';\nimport { setMaskValue, setElementValue, bindClearEvent } from '../base/index';\nvar ROOT = 'e-control-wrapper e-mask';\nvar INPUT = 'e-input';\nvar COMPONENT = 'e-maskedtextbox';\nvar CONTROL = 'e-control';\nvar MASKINPUT_FOCUS = 'e-input-focus';\nvar wrapperAttr = ['title', 'style', 'class'];\n/**\n * The MaskedTextBox allows the user to enter the valid input only based on the provided mask.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MaskedTextBox = /** @class */ (function (_super) {\n __extends(MaskedTextBox, _super);\n /**\n *\n * @param {MaskedTextBoxModel} options - Specifies the MaskedTextBox model.\n * @param {string | HTMLElement | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function MaskedTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initInputValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isClicked = false;\n _this.maskOptions = options;\n return _this;\n }\n /**\n * Gets the component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n MaskedTextBox.prototype.getModuleName = function () {\n return 'maskedtextbox';\n };\n /**\n * Initializes the event handler\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.preRender = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.regExpCollec = regularExpressions;\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n this.changeEventArgs = {};\n this.focusEventArgs = {};\n this.blurEventArgs = {};\n this.maskKeyPress = false;\n this.isFocus = false;\n this.isInitial = false;\n this.isIosInvalid = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n for (var i = 0; i < this.element.attributes.length; i++) {\n input.setAttribute(this.element.attributes[i].nodeName, this.element.attributes[i].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n if (this.element.hasAttribute('id')) {\n this.element.removeAttribute('id');\n }\n this.element.classList.remove('e-control', 'e-maskedtextbox');\n this.element.classList.add('e-mask-container');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkHtmlAttributes(false);\n if (this.formElement) {\n this.initInputValue = this.value;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Initializes the component rendering.\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n if (this.floatLabelType === 'Never') {\n addClass([this.element], INPUT);\n }\n this.createWrapper();\n this.updateHTMLAttrToWrapper();\n if (this.element.name === '') {\n this.element.setAttribute('name', this.element.id);\n }\n this.isInitial = true;\n this.resetMaskedTextBox();\n this.isInitial = false;\n this.setMaskPlaceholder(true, false);\n this.setWidth(this.width);\n this.preEleVal = this.element.value;\n if (!Browser.isDevice && (Browser.info.version === '11.0' || Browser.info.name === 'edge')) {\n this.element.blur();\n }\n if (Browser.isDevice && Browser.isIos) {\n this.element.blur();\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n MaskedTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n MaskedTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getValidClassList(newClass), [this.inputObj.container], this.getValidClassList(oldClass));\n };\n MaskedTextBox.prototype.getValidClassList = function (maskClassName) {\n var result = maskClassName;\n if (!isNullOrUndefined(maskClassName) && maskClassName !== '') {\n result = (maskClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n MaskedTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputObj.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var maskStyle = this.inputObj.container.getAttribute(key);\n maskStyle = !isNullOrUndefined(maskStyle) ? (maskStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputObj.container.setAttribute(key, maskStyle);\n }\n else {\n this.inputObj.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n MaskedTextBox.prototype.resetMaskedTextBox = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n if (this.promptChar.length > 1) {\n this.promptChar = this.promptChar[0];\n }\n createMask.call(this);\n applyMask.call(this);\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (!this.isInitial) {\n unwireEvents.call(this);\n }\n wireEvents.call(this);\n };\n MaskedTextBox.prototype.setMaskPlaceholder = function (setVal, dynamicPlaceholder) {\n if (dynamicPlaceholder || this.placeholder) {\n Input.setPlaceholder(this.placeholder, this.element);\n if ((this.element.value === this.promptMask && setVal && this.floatLabelType !== 'Always') ||\n this.element.value === this.promptMask && this.floatLabelType === 'Never') {\n setElementValue.call(this, '');\n }\n }\n };\n MaskedTextBox.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputObj.container.style.width = formatUnit(width);\n this.element.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n var elementWidth = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n this.inputObj.container.style.width = elementWidth;\n this.element.style.width = elementWidth;\n }\n }\n };\n MaskedTextBox.prototype.checkHtmlAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes)\n : ['placeholder', 'disabled', 'value', 'readonly'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'placeholder':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['enabled'] === undefined)) || isDynamic) {\n var isEnabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: isEnabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['readonly'] === undefined)) || isDynamic) {\n var isReadonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: isReadonly }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n MaskedTextBox.prototype.createWrapper = function () {\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = this.getValidClassList(this.cssClass);\n }\n this.inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('class', ROOT + ' ' + this.inputObj.container.getAttribute('class'));\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {MaskedTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {MaskedTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @hidden\n */\n MaskedTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n setMaskValue.call(this, this.value);\n if (this.placeholder) {\n this.setMaskPlaceholder(false, false);\n }\n break;\n case 'placeholder':\n this.setMaskPlaceholder(true, true);\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.element, this.inputObj.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element, this.floatLabelType, this.inputObj.container);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.inputObj.container]);\n break;\n case 'customCharacters':\n this.customCharacters = newProp.customCharacters;\n this.resetMaskedTextBox();\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.element, this.inputObj, undefined, this.createElement);\n bindClearEvent.call(this);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'mask':\n {\n var strippedValue_1 = this.value;\n this.mask = newProp.mask;\n this.updateValue(strippedValue_1);\n }\n break;\n case 'promptChar': {\n if (newProp.promptChar.length > 1) {\n newProp.promptChar = newProp.promptChar[0];\n }\n if (newProp.promptChar) {\n this.promptChar = newProp.promptChar;\n }\n else {\n this.promptChar = '_';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n var value = this.element.value.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n if (this.promptMask === this.element.value) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n value = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n this.promptMask = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n this.undoCollec = this.redoCollec = [];\n setElementValue.call(this, value);\n break;\n }\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n MaskedTextBox.prototype.updateValue = function (strippedVal) {\n this.resetMaskedTextBox();\n setMaskValue.call(this, strippedVal);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the value of the MaskedTextBox with the masked format.\n * By using `value` property, you can get the raw value of maskedtextbox without literals and prompt characters.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getMaskedValue = function () {\n return unstrippedValue.call(this, this.element);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n MaskedTextBox.prototype.destroy = function () {\n unwireEvents.call(this);\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n if (this.inputObj) {\n this.inputObj.container.insertAdjacentElement('afterend', this.element);\n detach(this.inputObj.container);\n }\n this.blurEventArgs = null;\n Input.destroy();\n this.changeEventArgs = null;\n this.inputObj = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], MaskedTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property({})\n ], MaskedTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], MaskedTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"mask\", void 0);\n __decorate([\n Property('_')\n ], MaskedTextBox.prototype, \"promptChar\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"customCharacters\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"blur\", void 0);\n MaskedTextBox = __decorate([\n NotifyPropertyChanges\n ], MaskedTextBox);\n return MaskedTextBox;\n}(Component));\nexport { MaskedTextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { MaskedTextBox } from '@syncfusion/ej2-inputs';\nimport { isEditable, getObject } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `MaskedTextBoxCellEdit` is used to handle masked input cell type editing.\n *\n * @hidden\n */\nvar MaskedTextBoxCellEdit = /** @class */ (function (_super) {\n __extends(MaskedTextBoxCellEdit, _super);\n function MaskedTextBoxCellEdit() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MaskedTextBoxCellEdit.prototype.write = function (args) {\n this.column = args.column;\n var isInlineEdit = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new MaskedTextBox(extend({\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n floatLabelType: isInlineEdit ? 'Never' : 'Always',\n mask: '000-000-0000',\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n };\n return MaskedTextBoxCellEdit;\n}(EditCellBase));\nexport { MaskedTextBoxCellEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, getValue } from '@syncfusion/ej2-base';\nimport { MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { getComplexFieldID } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `MultiSelectEditCell` is used to handle multiselect dropdown cell type editing.\n *\n * @hidden\n */\nvar MultiSelectEditCell = /** @class */ (function (_super) {\n __extends(MultiSelectEditCell, _super);\n function MultiSelectEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MultiSelectEditCell.prototype.write = function (args) {\n this.column = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new MultiSelect(extend({\n fields: { text: args.column.field, value: args.column.field },\n value: getValue(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always',\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n return MultiSelectEditCell;\n}(EditCellBase));\nexport { MultiSelectEditCell };\n","import { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { extend, isUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `numberfilterui` render number column.\n *\n * @hidden\n */\nvar NumberFilterUI = /** @class */ (function () {\n function NumberFilterUI(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n NumberFilterUI.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumberFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n };\n NumberFilterUI.prototype.write = function (args) {\n var numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.element.addEventListener('keydown', this.keyEventHandler);\n numberuiObj.value = args.filteredValue;\n };\n NumberFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n var filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n NumberFilterUI.prototype.destroy = function () {\n if (!this.numericTxtObj || this.numericTxtObj.isDestroyed) {\n return;\n }\n this.numericTxtObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return NumberFilterUI;\n}());\nexport { NumberFilterUI };\n","import { extend, Internationalization } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { isEditable, getComplexFieldID, getObject, createEditElement } from '../base/util';\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n *\n * @hidden\n */\nvar NumericEditCell = /** @class */ (function () {\n function NumericEditCell(parent) {\n this.parent = parent;\n }\n NumericEditCell.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumericEditCell.prototype.create = function (args) {\n this.instances = new Internationalization(this.parent.locale);\n return createEditElement(this.parent, args.column, 'e-field', {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericEditCell.prototype.read = function (element) {\n return this.obj.value;\n };\n NumericEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.edit.params));\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n this.obj.appendTo(args.element);\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n };\n NumericEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return NumericEditCell;\n}());\nexport { NumericEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed', 'onclick': 'event.preventDefault()' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded'), 'onclick': 'event.preventDefault()'\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed'), 'onclick': 'event.preventDefault()'\n } }));\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n return;\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if (!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n }));\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = _this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.getHeaderTable(), {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n elements[parseInt(i.toString(), 10)].count = uGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[parseInt(k.toString(), 10)].type instanceof Array ?\n (row.columns[parseInt(k.toString(), 10)].type) :\n [(row.columns[parseInt(k.toString(), 10)].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[parseInt(k.toString(), 10)].field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row.columns[parseInt(k.toString(), 10)]\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n EventHandler.add(this.customColumnDiv, 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter',\n className: this.parent.cssClass ?\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n options.cssClass = 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr');\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var rowsObject = this_1.parent.isFrozenGrid() ?\n this_1.parent.contentModule.tempFreezeRows : this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg_1.row.querySelector('.e-rowdragdrop');\n var cellIdx = this.parent.groupSettings.columns.length + (isDrag || this.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg_1.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","import { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { Browser, isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { getZIndexCalcualtion, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `string filterui` render string column.\n *\n * @hidden\n */\nvar StringFilterUI = /** @class */ (function () {\n function StringFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n StringFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.processDataOperation(args);\n };\n StringFilterUI.prototype.processDataOperation = function (args) {\n var _this = this;\n if (args.column.isForeignColumn()) {\n this.parent.getDataModule().dataManager.executeQuery(this.parent.getDataModule().generateQuery(true))\n .then(function (result) { _this.getAutoCompleteOptions(args, result); });\n return;\n }\n this.getAutoCompleteOptions(args);\n };\n StringFilterUI.prototype.getAutoCompleteOptions = function (args, result) {\n var isForeignColumn = args.column.isForeignColumn();\n var foreignColumnQuery;\n if (isForeignColumn) {\n var filteredData = CheckBoxFilterBase.getDistinct(result.result, args.column.field)\n .records || [];\n var filterQuery = void 0;\n for (var i = 0; i < filteredData.length; i++) {\n if (filterQuery) {\n filterQuery = filterQuery.or(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n else {\n filterQuery = new Predicate(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n }\n foreignColumnQuery = new Query().where(filterQuery);\n foreignColumnQuery.params = this.parent.query.params;\n }\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n var autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: isForeignColumn ? foreignColumnQuery : this.parent.getDataModule().generateQuery(true, true),\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue'),\n actionBegin: function () {\n if (this.query.queries.length && this.query.queries[0].fn === 'onWhere' && this.query.queries[0].e\n && this.query.queries[0].e.predicates) {\n for (var i = 0; i < this.query.queries[0].e.predicates.length; i++) {\n if (this.properties.fields.value === this.query.queries[0].e.predicates[\"\" + i].field) {\n this.query.queries[0].e.predicates.splice(i, 1);\n i = i - 1;\n }\n }\n if (!this.query.queries[0].e.predicates.length) {\n this.query.queries.splice(0, 1);\n }\n }\n }\n }, args.column.filter.params));\n this.acFocus = this.focus(autoComplete, args);\n this.acComplete = this.actionComplete(autoComplete);\n this.acOpen = this.openPopup.bind(this);\n autoComplete.addEventListener(literals.focus, this.acFocus);\n autoComplete.addEventListener(literals['open'], this.acOpen);\n autoComplete.addEventListener(events.actionComplete, this.acComplete);\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n this.actObj = autoComplete;\n this.actObj.appendTo(this.instance);\n if (isForeignColumn) {\n this.parent.filterModule.filterModule.afterRenderFilterUI();\n }\n };\n StringFilterUI.prototype.write = function (args) {\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n var struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n };\n StringFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n var filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n };\n StringFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n StringFilterUI.prototype.focus = function (actObj, args) {\n return function () {\n actObj.filterType = args.getOptrInstance.getFlOperator();\n };\n };\n StringFilterUI.prototype.actionComplete = function (actObj) {\n return function (e) {\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObj) {\n return (getValue(actObj.fields.value, mapObj));\n }).indexOf(getValue((actObj.fields.value), obj)) === index;\n });\n };\n };\n StringFilterUI.prototype.destroy = function () {\n if (!this.actObj || this.actObj.isDestroyed) {\n return;\n }\n this.actObj.removeEventListener(literals.focus, this.acFocus);\n this.actObj.removeEventListener(literals['open'], this.acOpen);\n this.actObj.removeEventListener(events.actionComplete, this.acComplete);\n this.actObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return StringFilterUI;\n}());\nexport { StringFilterUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { TimePicker } from '@syncfusion/ej2-calendars';\nimport { isEditable, getObject } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `TimePickerEditCell` is used to handle Timepicker cell type editing.\n *\n * @hidden\n */\nvar TimePickerEditCell = /** @class */ (function (_super) {\n __extends(TimePickerEditCell, _super);\n function TimePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TimePickerEditCell.prototype.write = function (args) {\n var isInlineEdit = this.parent.editSettings.mode !== 'Dialog';\n var rowDataValue = getObject(args.column.field, args.rowData);\n rowDataValue = rowDataValue ? new Date(rowDataValue) : null;\n this.obj = new TimePicker(extend({\n floatLabelType: isInlineEdit ? 'Never' : 'Always',\n value: rowDataValue,\n placeholder: isInlineEdit ?\n '' : args.column.headerText, enableRtl: this.parent.enableRtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n };\n return TimePickerEditCell;\n}(EditCellBase));\nexport { TimePickerEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, closest } from '@syncfusion/ej2-base';\nimport { Event, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, isRippleEnabled, removeClass, rippleEffect, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { rippleMouseHandler, destroy, preRender, setHiddenInput } from './../common/common';\nvar DISABLED = 'e-switch-disabled';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLE_CHECK = 'e-ripple-check';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-switch-wrapper';\nvar ACTIVE = 'e-switch-active';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'aria-label', 'id'];\n/**\n * The Switch is a graphical user interface element that allows you to toggle between checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar Switch = /** @class */ (function (_super) {\n __extends(Switch, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n *\n * @param {SwitchModel} options switch model\n * @param {string | HTMLInputElement} element target element\n *\n */\n function Switch(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isDrag = false;\n _this.isWireEvents = false;\n return _this;\n }\n Switch.prototype.changeState = function (state) {\n var ariaState;\n var rippleSpan;\n var wrapper = this.getWrapper();\n var bar = wrapper.querySelector('.e-switch-inner');\n var handle = wrapper.querySelector('.e-switch-handle');\n if (isRippleEnabled) {\n rippleSpan = wrapper.getElementsByClassName(RIPPLE)[0];\n }\n if (state) {\n addClass([bar, handle], ACTIVE);\n ariaState = 'true';\n this.element.checked = true;\n this.checked = true;\n if (rippleSpan) {\n addClass([rippleSpan], [RIPPLE_CHECK]);\n }\n }\n else {\n removeClass([bar, handle], ACTIVE);\n ariaState = 'false';\n this.element.checked = false;\n this.checked = false;\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLE_CHECK]);\n }\n }\n };\n Switch.prototype.clickHandler = function (evt) {\n this.isDrag = false;\n this.focusOutHandler();\n this.changeState(!this.checked);\n this.element.focus();\n var changeEventArgs = { checked: this.element.checked, event: evt };\n this.trigger('change', changeEventArgs);\n };\n /**\n * Destroys the Switch widget.\n *\n * @returns {void}\n */\n Switch.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (!this.disabled) {\n this.unWireEvents();\n }\n destroy(this, this.getWrapper(), this.tagName);\n };\n Switch.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n Switch.prototype.focusOutHandler = function () {\n this.getWrapper().classList.remove('e-focus');\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Switch.prototype.getModuleName = function () {\n return 'switch';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist data\n */\n Switch.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n Switch.prototype.getWrapper = function () {\n return this.element.parentElement;\n };\n Switch.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialSwitchCheckedValue)) {\n this.initialSwitchCheckedValue = 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 }\n if (this.checked) {\n this.changeState(true);\n }\n if (this.disabled) {\n this.setDisabled();\n }\n if (this.onLabel || this.offLabel) {\n this.setLabel(this.onLabel, this.offLabel);\n }\n };\n Switch.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 switchInner = this.createElement('span', { className: 'e-switch-inner' });\n var onLabel = this.createElement('span', { className: 'e-switch-on' });\n var offLabel = this.createElement('span', { className: 'e-switch-off' });\n var handle = this.createElement('span', { className: 'e-switch-handle' });\n wrapper.appendChild(this.element);\n setHiddenInput(this, wrapper);\n switchInner.appendChild(onLabel);\n switchInner.appendChild(offLabel);\n wrapper.appendChild(switchInner);\n wrapper.appendChild(handle);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n handle.appendChild(rippleSpan);\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\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 };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {SwitchModel} newProp - Specifies New Properties\n * @param {SwitchModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n Switch.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.changeState(newProp.checked);\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n this.isWireEvents = false;\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n if (!this.isWireEvents) {\n this.wireEvents();\n this.isWireEvents = true;\n }\n }\n break;\n case 'value':\n this.element.setAttribute('value', newProp.value);\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'onLabel':\n case 'offLabel':\n this.setLabel(newProp.onLabel, newProp.offLabel);\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 '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 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n Switch.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n preRender(this, 'EJS-SWITCH', WRAPPER, element, this.getModuleName());\n };\n /**\n * Initialize control rendering.\n *\n * @private\n * @returns {void}\n */\n Switch.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.updateHtmlAttribute();\n };\n Switch.prototype.rippleHandler = function (e) {\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n if (e.type === 'mousedown' && e.currentTarget.classList.contains('e-switch-wrapper') && e.which === 1) {\n this.isDrag = true;\n this.isFocused = false;\n }\n };\n Switch.prototype.rippleTouchHandler = function (eventType) {\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(eventType, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n };\n Switch.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 Switch.prototype.setLabel = function (onText, offText) {\n var wrapper = this.getWrapper();\n if (onText) {\n wrapper.querySelector('.e-switch-on').textContent = onText;\n }\n if (offText) {\n wrapper.querySelector('.e-switch-off').textContent = offText;\n }\n };\n Switch.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (ATTRIBUTES.indexOf(key) > -1) {\n var wrapper = this.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 wrapper.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 Switch.prototype.switchFocusHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n Switch.prototype.switchMouseUp = function (e) {\n var target = e.target;\n if (e.type === 'touchmove') {\n e.preventDefault();\n }\n if (e.type === 'touchstart') {\n this.isDrag = true;\n this.rippleTouchHandler('mousedown');\n }\n if (this.isDrag) {\n if ((e.type === 'mouseup' && target.className.indexOf('e-switch') < 0) || e.type === 'touchend') {\n this.clickHandler(e);\n this.rippleTouchHandler('mouseup');\n e.preventDefault();\n }\n }\n };\n Switch.prototype.formResetHandler = function () {\n this.checked = this.initialSwitchCheckedValue;\n this.element.checked = this.initialSwitchCheckedValue;\n };\n /**\n * Toggle the Switch component state into checked/unchecked.\n *\n * @returns {void}\n */\n Switch.prototype.toggle = function () {\n this.clickHandler();\n };\n Switch.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n this.delegateMouseUpHandler = this.switchMouseUp.bind(this);\n this.delegateKeyUpHandler = this.switchFocusHandler.bind(this);\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'mouseup', this.delegateMouseUpHandler, this);\n EventHandler.add(this.element, 'keyup', this.delegateKeyUpHandler, this);\n EventHandler.add(wrapper, 'mousedown mouseup', this.rippleHandler, this);\n EventHandler.add(wrapper, 'touchstart touchmove touchend', this.switchMouseUp, this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n Switch.prototype.unWireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'mouseup', this.delegateMouseUpHandler);\n EventHandler.remove(this.element, 'keyup', this.delegateKeyUpHandler);\n EventHandler.remove(wrapper, 'mousedown mouseup', this.rippleHandler);\n EventHandler.remove(wrapper, 'touchstart touchmove touchend', this.switchMouseUp);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n /**\n * Click the switch element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Switch.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Switch\n * its native method\n *\n * @public\n */\n Switch.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], Switch.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Switch.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], Switch.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], Switch.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Switch.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Switch.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Switch.prototype, \"onLabel\", void 0);\n __decorate([\n Property('')\n ], Switch.prototype, \"offLabel\", void 0);\n __decorate([\n Property('')\n ], Switch.prototype, \"value\", void 0);\n __decorate([\n Property({})\n ], Switch.prototype, \"htmlAttributes\", void 0);\n Switch = __decorate([\n NotifyPropertyChanges\n ], Switch);\n return Switch;\n}(Component));\nexport { Switch };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Switch } from '@syncfusion/ej2-buttons';\nimport { extend } from '@syncfusion/ej2-base';\nimport { isEditable, addRemoveActiveClasses, createEditElement, getObject } from '../base/util';\nimport * as literals from '../base/string-literals';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `ToggleEditCell` is used to handle boolean cell type editing.\n *\n * @hidden\n */\nvar ToggleEditCell = /** @class */ (function (_super) {\n __extends(ToggleEditCell, _super);\n function ToggleEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeClasses = ['e-selectionbackground', 'e-active'];\n return _this;\n }\n ToggleEditCell.prototype.create = function (args) {\n var clsNames = 'e-field e-boolcell';\n if (args.column.type === 'checkbox') {\n clsNames = 'e-field e-boolcell e-edit-checkselect';\n }\n return createEditElement(this.parent, args.column, clsNames, { type: 'checkbox', value: args.value });\n };\n ToggleEditCell.prototype.read = function (element) {\n return element.checked;\n };\n ToggleEditCell.prototype.write = function (args) {\n var chkBoxElement = !isNullOrUndefined(args.row) && args.row.querySelector('.e-edit-checkselect');\n var data = getObject(args.column.field, args.rowData);\n var checkState = data && JSON.parse(data.toString().toLowerCase());\n if (!isNullOrUndefined(chkBoxElement)) {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n checkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.getElementsByClassName(literals.rowCell)), checkState].concat(this.activeClasses));\n }\n this.obj = new Switch(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: checkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n change: this.switchModeChange.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n };\n ToggleEditCell.prototype.switchModeChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var addClass = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n addClass = true;\n this.editRow.setAttribute('aria-selected', addClass.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.getElementsByClassName(literals.rowCell)), addClass].concat(this.activeClasses));\n }\n };\n return ToggleEditCell;\n}(EditCellBase));\nexport { ToggleEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { remove, createElement, closest, formatUnit, Browser, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { dataReady, modelChanged, refreshVirtualBlock, contentReady } from '../base/constant';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { ContentRender } from './content-renderer';\nimport { HeaderRender } from './header-renderer';\nimport { InterSectionObserver } from '../services/intersection-observer';\nimport { VirtualRowModelGenerator } from '../services/virtual-row-model-generator';\nimport { isGroupAdaptive, ensureLastRow, ensureFirstRow, getEditedDataIndex, getTransformValues } from '../base/util';\nimport { setStyleAttribute } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * VirtualContentRenderer\n *\n * @hidden\n */\nvar VirtualContentRenderer = /** @class */ (function (_super) {\n __extends(VirtualContentRenderer, _super);\n function VirtualContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.prevHeight = 0;\n /** @hidden */\n _this.startIndex = 0;\n _this.preStartIndex = 0;\n _this.preventEvent = false;\n _this.actions = ['filtering', 'searching', 'grouping', 'ungrouping'];\n /** @hidden */\n _this.offsets = {};\n _this.tmpOffsets = {};\n /** @hidden */\n _this.virtualEle = new VirtualElementHandler();\n _this.offsetKeys = [];\n _this.isFocused = false;\n _this.isSelection = false;\n _this.isBottom = false;\n /** @hidden */\n _this.isTop = false;\n _this.rndrCount = 0;\n _this.empty = undefined;\n _this.isCancel = false;\n _this.requestTypes = ['beginEdit', 'cancel', 'delete', 'add', 'save'];\n _this.isNormaledit = _this.parent.editSettings.mode === 'Normal';\n /** @hidden */\n _this.virtualData = {};\n _this.emptyRowData = {};\n _this.vfColIndex = [];\n _this.frzIdx = 1;\n _this.isContextMenuOpen = false;\n _this.isSelectionScroll = false;\n _this.validationCheck = false;\n _this.locator = locator;\n _this.eventListener('on');\n _this.parent.on(events.columnVisibilityChanged, _this.setVisible, _this);\n _this.vgenerator = _this.generator;\n return _this;\n }\n VirtualContentRenderer.prototype.renderTable = function () {\n this.header = this.locator.getService('rendererFactory').getRenderer(RenderType.Header);\n _super.prototype.renderTable.call(this);\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualEle.renderWrapper(this.parent.height);\n this.virtualEle.renderPlaceHolder();\n this.virtualEle.wrapper.style.position = 'absolute';\n var debounceEvent = (this.parent.dataSource instanceof DataManager && !this.parent.dataSource.dataSource.offline);\n var opt = {\n container: this.content, pageHeight: this.getBlockHeight() * 2, debounceEvent: debounceEvent,\n axes: this.parent.enableColumnVirtualization ? ['X', 'Y'] : ['Y']\n };\n this.observer = new InterSectionObserver(this.virtualEle.wrapper, opt);\n };\n VirtualContentRenderer.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n this.virtualEle.adjustTable(0, 0);\n };\n VirtualContentRenderer.prototype.getReorderedFrozenRows = function (args) {\n var blockIndex = args.virtualInfo.blockIndexes;\n var colsIndex = args.virtualInfo.columnIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n args.virtualInfo.page = 1;\n if (!args.renderMovableContent) {\n args.virtualInfo.columnIndexes = [];\n }\n var recordslength = this.parent.getCurrentViewRecords().length;\n var firstRecords = this.parent.renderModule.data.dataManager.dataSource.json.slice(0, recordslength);\n var virtualRows = this.vgenerator.generateRows(firstRecords, args);\n args.virtualInfo.blockIndexes = blockIndex;\n args.virtualInfo.columnIndexes = colsIndex;\n args.virtualInfo.page = page;\n return virtualRows.splice(0, this.parent.frozenRows);\n };\n VirtualContentRenderer.prototype.scrollListener = function (scrollArgs) {\n this.scrollAfterEdit();\n if (this.parent.enablePersistence) {\n this.parent.scrollPosition = scrollArgs.offset;\n }\n if (this.preventEvent || this.parent.isDestroyed) {\n this.preventEvent = false;\n return;\n }\n if (this.parent.islazyloadRequest && scrollArgs.direction === 'down') {\n this.parent.removeMaskRow();\n this.parent.islazyloadRequest = false;\n return;\n }\n if (isNullOrUndefined(document.activeElement)) {\n this.isFocused = false;\n }\n else {\n this.isFocused = this.content === closest(document.activeElement, '.' + literals.content) || this.content === document.activeElement;\n }\n var info = scrollArgs.sentinel;\n var viewInfo = this.currentInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset);\n if (isGroupAdaptive(this.parent)) {\n if (viewInfo.blockIndexes && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString()) {\n this.parent.removeMaskRow();\n return;\n }\n else {\n viewInfo.event = 'refresh-virtual-block';\n if (!isNullOrUndefined(viewInfo.offsets)) {\n viewInfo.offsets.top = this.content.scrollTop;\n }\n this.parent.pageSettings.currentPage = viewInfo.page;\n if (this.parent.enableVirtualMaskRow) {\n this.parent.showMaskRow(info.axis);\n this.parent.addShimmerEffect();\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n return;\n }\n }\n if (this.prevInfo && ((info.axis === 'Y' && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString())\n || (info.axis === 'X' && this.prevInfo.columnIndexes.toString() === viewInfo.columnIndexes.toString()))) {\n this.parent.removeMaskRow();\n if (Browser.isIE) {\n this.parent.hideSpinner();\n }\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n if (info.axis === 'Y') {\n this.restoreEdit();\n }\n if (this.parent.groupSettings.enableLazyLoading && this.prevInfo.blockIndexes[0] === 1 && viewInfo.blockIndexes[0] === 1 &&\n scrollArgs.direction === 'up') {\n this.virtualEle.adjustTable(0, viewInfo.offsets.top < this.offsets[1] ? 0 : this.getBlockHeight());\n }\n return;\n }\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n this.parent.pageSettings.currentPage = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n this.requestType = 'virtualscroll';\n if (this.parent.enableVirtualMaskRow) {\n this.parent.showMaskRow(info.axis);\n this.parent.addShimmerEffect();\n }\n this.parent.islazyloadRequest = false;\n this.parent.notify(viewInfo.event, {\n requestType: 'virtualscroll', virtualInfo: viewInfo,\n focusElement: scrollArgs.focusElement\n });\n if (this.parent.enableColumnVirtualization && !this.parent.getContentTable().querySelector('tr.e-row')) {\n this.parent.removeMaskRow();\n this.appendContent(undefined, undefined, {\n requestType: 'virtualscroll', virtualInfo: viewInfo,\n focusElement: scrollArgs.focusElement\n });\n this.prevInfo = viewInfo;\n }\n };\n VirtualContentRenderer.prototype.block = function (blk) {\n return this.vgenerator.isBlockAvailable(blk);\n };\n VirtualContentRenderer.prototype.getInfoFromView = function (direction, info, e) {\n var isBlockAdded = false;\n var tempBlocks = [];\n var infoType = { direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.preStartIndex, endIndex: this.preEndIndex };\n infoType.page = this.getPageFromTop(e.top, infoType);\n infoType.blockIndexes = tempBlocks = this.vgenerator.getBlockIndexes(infoType.page);\n infoType.loadSelf = !this.vgenerator.isBlockAvailable(tempBlocks[infoType.block]);\n var blocks = this.ensureBlocks(infoType);\n if (this.activeKey === 'upArrow' && infoType.blockIndexes.toString() !== blocks.toString()) {\n // To avoid dupilcate row index problem in key focus support\n var newBlock = blocks[blocks.length - 1];\n if (infoType.blockIndexes.indexOf(newBlock) === -1) {\n isBlockAdded = true;\n }\n }\n infoType.blockIndexes = blocks;\n infoType.loadNext = !blocks.filter(function (val) { return tempBlocks.indexOf(val) === -1; })\n .every(this.block.bind(this));\n infoType.event = (infoType.loadNext || infoType.loadSelf) ? modelChanged : refreshVirtualBlock;\n infoType.nextInfo = infoType.loadNext ? { page: Math.max(1, infoType.page + (direction === 'down' ? 1 : -1)) } : {};\n if (isBlockAdded) {\n infoType.blockIndexes = [infoType.blockIndexes[0] - 1, infoType.blockIndexes[0], infoType.blockIndexes[0] + 1];\n }\n if (this.activeKey === 'downArrow') {\n var firstBlock = Math.ceil(this.rowIndex / this.getBlockSize());\n if (firstBlock !== 1 && (infoType.blockIndexes[1] !== firstBlock || infoType.blockIndexes.length < 3)) {\n infoType.blockIndexes = [firstBlock - 1, firstBlock, firstBlock + 1];\n }\n }\n infoType.columnIndexes = info.axis === 'X' ? this.vgenerator.getColumnIndexes() : this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && info.axis === 'X') {\n infoType.event = refreshVirtualBlock;\n }\n return infoType;\n };\n VirtualContentRenderer.prototype.setKeyboardNavIndex = function () {\n this.blazorDataLoad = true;\n if (this.activeKey === 'downArrow' || this.activeKey === 'upArrow') {\n this.blzRowIndex = this.activeKey === 'downArrow' ? this.rowIndex + 1 : this.rowIndex - 1;\n document.activeElement.blur();\n }\n };\n VirtualContentRenderer.prototype.ensureBlocks = function (info) {\n var _this = this;\n var index = info.blockIndexes[info.block];\n var mIdx;\n var old = index;\n var max = Math.max;\n var indexes = info.direction === 'down' ? [max(index, 1), ++index, ++index] : [max(index - 1, 1), index, index + 1];\n this.prevInfo = this.prevInfo || this.vgenerator.getData();\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n // To avoid frozen content white space issue\n if (info.sentinelInfo.axis === 'X' || (info.sentinelInfo.axis === 'Y' && (info.page === this.prevInfo.page))) {\n indexes = this.prevInfo.blockIndexes;\n }\n }\n indexes = indexes.filter(function (val, ind) { return indexes.indexOf(val) === ind; });\n if (this.prevInfo.blockIndexes.toString() === indexes.toString()) {\n return indexes;\n }\n if (info.loadSelf || (info.direction === 'down' && this.isEndBlock(old))) {\n indexes = this.vgenerator.getBlockIndexes(info.page);\n }\n indexes.some(function (val, ind) {\n var result = val === (isGroupAdaptive(_this.parent) ? _this.getGroupedTotalBlocks() : _this.getTotalBlocks());\n if (result) {\n mIdx = ind;\n }\n return result;\n });\n if (mIdx !== undefined) {\n indexes = indexes.slice(0, mIdx + 1);\n if (info.block === 0 && indexes.length === 1 && this.vgenerator.isBlockAvailable(indexes[0] - 1)) {\n indexes = [indexes[0] - 1, indexes[0]];\n }\n }\n return indexes;\n };\n // tslint:disable-next-line:max-func-body-length\n VirtualContentRenderer.prototype.appendContent = function (target, newChild, e) {\n var _this = this;\n // currentInfo value will be used if there are multiple dom updates happened due to mousewheel\n var isFrozen = this.parent.isFrozenGrid();\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var colVFtable = this.parent.enableColumnVirtualization && isFrozen;\n this.checkFirstBlockColIndexes(e);\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' && this.currentInfo.page &&\n this.currentInfo.page !== e.virtualInfo.page ? this.currentInfo : e.virtualInfo;\n this.prevInfo = this.prevInfo || e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n if (colVFtable && info.columnIndexes[0] === frzCols) {\n cBlock = (info.columnIndexes[0] - frzCols) - 1;\n }\n var cOffset = this.getColumnOffset(cBlock);\n var width;\n var blocks = info.blockIndexes;\n if (this.parent.groupSettings.columns.length) {\n this.refreshOffsets();\n }\n if (this.parent.height === '100%') {\n this.parent.element.style.height = '100%';\n }\n var vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.content.getBoundingClientRect().height :\n this.parent.element.getBoundingClientRect().height;\n if (!this.requestTypes.some(function (value) { return value === _this.requestType; })) {\n var translate = this.getTranslateY(this.content.scrollTop, vHeight, info);\n if (this.parent.groupSettings.enableLazyLoading && info && this.prevInfo && this.prevInfo.blockIndexes[0] === 1 &&\n info.blockIndexes[0] === 1 && info.direction === 'up') {\n this.virtualEle.adjustTable(0, this.content.scrollTop < this.offsets[1] ? 0 : this.getBlockHeight());\n }\n else {\n this.virtualEle.adjustTable(colVFtable ? 0 : cOffset, translate);\n }\n if (colVFtable) {\n this.virtualEle.adjustMovableTable(cOffset, 0);\n }\n }\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(colVFtable ? 0 : cOffset, 0);\n if (colVFtable) {\n this.header.virtualEle.adjustMovableTable(cOffset, 0);\n }\n }\n if (this.parent.enableColumnVirtualization) {\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n if (colVFtable) {\n this.header.virtualEle.setMovableWrapperWidth(width);\n }\n else {\n this.header.virtualEle.setWrapperWidth(width);\n }\n }\n if (colVFtable) {\n this.virtualEle.setMovableWrapperWidth(width, Browser.isIE || Browser.info.name === 'edge');\n }\n else {\n this.virtualEle.setWrapperWidth(width, Browser.isIE || Browser.info.name === 'edge');\n }\n if (this.parent.enableColumnVirtualization && isNullOrUndefined(target) && isNullOrUndefined(newChild)) {\n return;\n }\n if (!isNullOrUndefined(target) && !isNullOrUndefined(target.parentNode)) {\n remove(target);\n }\n var tbody;\n if (isFrozen) {\n if (e.renderFrozenRightContent) {\n tbody = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n }\n else if (!e.renderMovableContent) {\n tbody = this.parent.getFrozenVirtualContent().querySelector(literals.tbody);\n }\n else if (e.renderMovableContent) {\n tbody = this.parent.getMovableVirtualContent().querySelector(literals.tbody);\n }\n }\n else {\n tbody = this.parent.element.querySelector('.' + literals.content).querySelector(literals.tbody);\n }\n if (tbody) {\n remove(tbody);\n target = null;\n }\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (!isReact) {\n target = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n target.appendChild(newChild);\n }\n else {\n target = newChild;\n }\n if (this.parent.frozenRows && e.requestType === 'virtualscroll' && this.parent.pageSettings.currentPage === 1) {\n for (var i = 0; i < this.parent.frozenRows; i++) {\n target.children[0].remove();\n }\n }\n if (isFrozen) {\n if (e.renderFrozenRightContent) {\n this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.' + literals.table).appendChild(target);\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n this.parent.notify(events.freezeRender, { case: 'refreshHeight' });\n }\n else if (!e.renderMovableContent) {\n this.parent.getFrozenVirtualContent().querySelector('.' + literals.table).appendChild(target);\n }\n else if (e.renderMovableContent) {\n this.parent.getMovableVirtualContent().querySelector('.' + literals.table).appendChild(target);\n if (this.parent.getFrozenMode() !== literals.leftRight) {\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n this.parent.notify(events.freezeRender, { case: 'refreshHeight' });\n }\n }\n if (this.vfColIndex.length) {\n e.virtualInfo.columnIndexes = info.columnIndexes = extend([], this.vfColIndex);\n this.vfColIndex = e.renderMovableContent ? [] : this.vfColIndex;\n }\n }\n else {\n this.getTable().appendChild(target);\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n }\n if (this.parent.groupSettings.columns.length) {\n if (!isGroupAdaptive(this.parent) && info.direction === 'up') {\n var blk = this.offsets[this.getTotalBlocks()] - this.prevHeight;\n if (!this.parent.groupSettings.enableLazyLoading) {\n this.preventEvent = true;\n }\n var sTop = this.content.scrollTop;\n this.content.scrollTop = sTop + blk;\n }\n this.setVirtualHeight();\n if (!this.parent.groupSettings.enableLazyLoading) {\n this.observer.setPageHeight(this.getOffset(blocks[blocks.length - 1]) - this.getOffset(blocks[0] - 1));\n }\n }\n this.prevInfo = info;\n if (this.isFocused && this.activeKey !== 'downArrow' && this.activeKey !== 'upArrow') {\n this.content.focus();\n }\n var lastPage = Math.ceil(this.getTotalBlocks() / 2);\n if (this.isBottom) {\n this.isBottom = false;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 1];\n }\n if ((this.parent.pageSettings.currentPage === lastPage) && blocks.length === 1) {\n this.isBottom = true;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 2];\n }\n if (this.parent.isFrozenGrid() && (this.parent.pageSettings.currentPage === lastPage - 1) && info.direction === 'up') {\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 3];\n }\n if (this.isTop) {\n this.parent.getContent().firstElementChild.scrollTop = 0;\n this.isTop = false;\n }\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(events.autoCol, {});\n }\n this.focusCell(e);\n this.restoreEdit(e);\n this.restoreAdd(e);\n this.ensureSelectedRowPosition();\n this.validationScrollLeft(e, isFrozen);\n if (!this.initialRowTop) {\n var gridTop = this.parent.element.getBoundingClientRect().top;\n if (this.parent.getRowByIndex(0)) {\n this.initialRowTop = this.parent.getRowByIndex(0).getBoundingClientRect().top - gridTop;\n }\n }\n var tableName = e.tableName;\n var isLoaded = this.parent.getFrozenMode() === 'Left-Right' ? tableName === 'frozen-right' : tableName === 'movable';\n if (!isFrozen || isLoaded) {\n this.vgenerator.startIndex = null;\n this.vgenerator.currentInfo = {};\n this.vgenerator.includePrevPage = null;\n }\n };\n VirtualContentRenderer.prototype.validationScrollLeft = function (e, isFrozen) {\n var left = this.parent.getFrozenColumns();\n var table = this.parent.getFrozenMode();\n var trigger = !isFrozen || e && (left || table === 'Left' || table === 'Right' ? e.renderMovableContent\n : e.renderFrozenRightContent);\n if (this.validationCheck && trigger) {\n if (this.validationCol) {\n var offset = this.vgenerator.cOffsets[(this.validationCol.index - this.parent.getVisibleFrozenColumns()) - 1];\n this.validationCol = null;\n if (this.parent.isFrozenGrid()) {\n this.movableContent.scrollLeft = offset;\n }\n else {\n this.content.scrollLeft = offset;\n }\n }\n else {\n this.validationCheck = false;\n this.parent.editModule.editFormValidate();\n }\n }\n };\n VirtualContentRenderer.prototype.ensureSelectedRowPosition = function () {\n if (!this.isSelection && this.isSelectionScroll && !isNullOrUndefined(this.selectRowIndex)) {\n this.isSelectionScroll = false;\n var row = this.parent.getRowByIndex(this.selectRowIndex);\n if (row && !this.isRowInView(row)) {\n this.rowSelected({ rowIndex: this.selectRowIndex, row: row }, true);\n }\n }\n };\n VirtualContentRenderer.prototype.checkFirstBlockColIndexes = function (e) {\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid() && e.virtualInfo.columnIndexes[0] === 0) {\n var indexes = [];\n var frozenCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n if (!e.renderMovableContent && e.virtualInfo.columnIndexes.length > frozenCols) {\n this.vfColIndex = e.virtualInfo.columnIndexes;\n for (var i = 0; i < frozenCols; i++) {\n indexes.push(i);\n }\n e.virtualInfo.columnIndexes = indexes;\n }\n else if (e.renderMovableContent) {\n if (!this.vfColIndex.length) {\n this.vfColIndex = extend([], e.virtualInfo.columnIndexes);\n }\n e.virtualInfo.columnIndexes = extend([], this.vfColIndex);\n e.virtualInfo.columnIndexes.splice(0, frozenCols);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.focusCell = function (e) {\n if (this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n return;\n }\n var row = this.parent.getRowByIndex(this.rowIndex);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = row.cells[this.cellIndex];\n cell.focus({ preventScroll: true });\n if (!this.parent.selectionSettings.checkboxOnly) {\n this.parent.selectRow(parseInt(row.getAttribute(literals.dataRowIndex), 10));\n }\n this.activeKey = this.empty;\n };\n VirtualContentRenderer.prototype.restoreEdit = function (e) {\n if (this.isNormaledit) {\n var left = this.parent.getFrozenColumns();\n var isFrozen = e && this.parent.isFrozenGrid();\n var table = this.parent.getFrozenMode();\n var trigger = e && (left || table === 'Left' || table === 'Right' ? e.renderMovableContent\n : e.renderFrozenRightContent);\n if ((!isFrozen || (isFrozen && trigger)) && this.parent.editSettings.allowEditing\n && this.parent.editModule && !isNullOrUndefined(this.editedRowIndex)) {\n var row = this.getRowByIndex(this.editedRowIndex);\n var content = this.content;\n var keys = Object.keys(this.virtualData);\n var isXaxis = e && e.virtualInfo && e.virtualInfo.sentinelInfo.axis === 'X';\n if (isFrozen && isXaxis) {\n row = this.parent.getMovableRowByIndex(this.editedRowIndex);\n content = this.movableContent;\n }\n if (keys.length && row && !content.querySelector('.' + literals.editedRow)) {\n var top_1 = row.getBoundingClientRect().top;\n if (isXaxis || (top_1 < this.content.offsetHeight && top_1 > this.parent.getRowHeight())) {\n this.parent.isEdit = false;\n this.parent.editModule.startEdit(row);\n }\n }\n if (row && this.content.querySelector('.' + literals.editedRow) && !keys.length) {\n var rowData = extend({}, this.getRowObjectByIndex(this.editedRowIndex));\n this.virtualData = this.getVirtualEditedData(rowData);\n }\n }\n this.restoreAdd(e);\n }\n };\n VirtualContentRenderer.prototype.getVirtualEditedData = function (rowData) {\n var editForms = [].slice.call(this.parent.element.getElementsByClassName('e-gridform'));\n var isFormDestroyed = this.parent.editModule && this.parent.editModule.formObj\n && this.parent.editModule.formObj.isDestroyed;\n if (!isFormDestroyed) {\n for (var i = 0; i < editForms.length; i++) {\n rowData = this.parent.editModule.getCurrentEditedData(editForms[parseInt(i.toString(), 10)], rowData);\n }\n }\n return rowData;\n };\n VirtualContentRenderer.prototype.restoreAdd = function (e) {\n var left = this.parent.getFrozenColumns();\n var isFrozen = e && this.parent.isFrozenGrid();\n var table = this.parent.getFrozenMode();\n var isXaxis = e && e.virtualInfo && e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'X';\n var startAdd = isXaxis && isFrozen ? !(this.parent.getMovableVirtualHeader().querySelector('.' + literals.addedRow)\n || this.parent.getMovableVirtualContent().querySelector('.' + literals.addedRow)) : !this.parent.element.querySelector('.' + literals.addedRow);\n var trigger = e && (left || table === 'Left' || table === 'Right' ? e.renderMovableContent : e.renderFrozenRightContent);\n if ((!isFrozen || (isFrozen && trigger)) && this.isNormaledit && this.isAdd && startAdd) {\n var isTop = this.parent.editSettings.newRowPosition === 'Top' && this.content.scrollTop < this.parent.getRowHeight();\n var isBottom = this.parent.editSettings.newRowPosition === 'Bottom'\n && this.parent.pageSettings.currentPage === this.maxPage;\n if (isTop || isBottom) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n }\n };\n VirtualContentRenderer.prototype.onDataReady = function (e) {\n if (!isNullOrUndefined(e.count)) {\n this.count = e.count;\n this.maxPage = Math.ceil(e.count / this.parent.pageSettings.pageSize);\n }\n this.vgenerator.checkAndResetCache(e.requestType);\n if (['refresh', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', undefined]\n .some(function (value) { return e.requestType === value; })) {\n this.refreshOffsets();\n }\n this.setVirtualHeight();\n this.resetScrollPosition(e.requestType);\n };\n /**\n * @param {number} height - specifies the height\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.setVirtualHeight = function (height) {\n var width = this.parent.enableColumnVirtualization ?\n this.getColumnOffset(this.parent.columns.length + this.parent.groupSettings.columns.length - 1) + 'px' : '100%';\n if (this.parent.isFrozenGrid()) {\n var virtualHeightTemp = (this.parent.pageSettings.currentPage === 1 && Object.keys(this.offsets).length <= 2) ?\n this.offsets[1] : this.offsets[this.getTotalBlocks() - 2];\n var scrollableElementHeight = this.content.clientHeight;\n virtualHeightTemp = virtualHeightTemp > scrollableElementHeight ? virtualHeightTemp : 0;\n // To overcome the white space issue in last page (instead of position absolute)\n this.virtualEle.setVirtualHeight(virtualHeightTemp, width);\n }\n else {\n var virtualHeight = (this.offsets[isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() :\n this.getTotalBlocks()]);\n this.virtualEle.setVirtualHeight(virtualHeight, width);\n }\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.setVirtualHeight(1, width);\n if (this.parent.isFrozenGrid()) {\n this.virtualEle.setMovableVirtualHeight(1, width);\n this.header.virtualEle.setMovableVirtualHeight(1, width);\n }\n }\n };\n VirtualContentRenderer.prototype.getPageFromTop = function (sTop, info) {\n var _this = this;\n var total = (isGroupAdaptive(this.parent)) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n var page = 0;\n this.offsetKeys.some(function (offset) {\n var iOffset = Number(offset);\n var border = sTop <= _this.offsets[\"\" + offset] || (iOffset === total && sTop > _this.offsets[\"\" + offset]);\n if (border) {\n if (_this.offsetKeys.length % 2 !== 0 && iOffset.toString() === _this.offsetKeys[_this.offsetKeys.length - 2]\n && sTop <= _this.offsets[_this.offsetKeys.length - 1]) {\n iOffset = iOffset + 1;\n }\n info.block = iOffset % 2 === 0 ? 1 : 0;\n page = Math.max(1, Math.min(_this.vgenerator.getPage(iOffset), _this.maxPage));\n }\n return border;\n });\n return page;\n };\n VirtualContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if (info === undefined) {\n info = { page: this.getPageFromTop(sTop, {}) };\n info.blockIndexes = this.vgenerator.getBlockIndexes(info.page);\n }\n var block = (info.blockIndexes[0] || 1) - 1;\n var translate = this.getOffset(block);\n var endTranslate = this.getOffset(info.blockIndexes[info.blockIndexes.length - 1]);\n if (isOnenter) {\n info = this.prevInfo;\n }\n var result = translate > sTop ?\n this.getOffset(block - 1) : endTranslate < (sTop + cHeight) ? this.getOffset(block + 1) : translate;\n var blockHeight = this.offsets[info.blockIndexes[info.blockIndexes.length - 1]] -\n this.tmpOffsets[info.blockIndexes[0]];\n var totalBlocks = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n if (result + blockHeight > this.offsets[parseInt(totalBlocks.toString(), 10)]) {\n result -= (result + blockHeight) - this.offsets[parseInt(totalBlocks.toString(), 10)];\n }\n return result;\n };\n VirtualContentRenderer.prototype.getOffset = function (block) {\n return Math.min(this.offsets[parseInt(block.toString(), 10)] | 0, this.offsets[this.maxBlock] | 0);\n };\n VirtualContentRenderer.prototype.onEntered = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n if (Browser.isIE && !isWheel && check && !_this.preventEvent && !_this.parent.enableVirtualMaskRow) {\n _this.parent.showSpinner();\n }\n if (_this.parent.enableVirtualMaskRow && !_this.preventEvent) {\n var firstOffSetKey = parseInt(_this.offsetKeys[0], 10);\n var lastOffSetKey = parseInt(_this.offsetKeys[_this.offsetKeys.length - 1], 10);\n var blockIndex = _this.currentInfo.blockIndexes;\n if (!((blockIndex && blockIndex[0] === firstOffSetKey && direction === 'up') ||\n (blockIndex && blockIndex[blockIndex.length - 1] === lastOffSetKey && direction === 'down'))) {\n setTimeout(function () {\n _this.parent.showMaskRow(current.axis);\n }, 0);\n }\n }\n var colVFtable = _this.parent.enableColumnVirtualization && _this.parent.isFrozenGrid();\n _this.prevInfo = _this.prevInfo || _this.vgenerator.getData();\n var xAxis = current.axis === 'X';\n var top = _this.prevInfo.offsets ? _this.prevInfo.offsets.top : null;\n var height = _this.content.getBoundingClientRect().height;\n var x = _this.getColumnOffset(xAxis ? _this.vgenerator.getColumnIndexes()[0] - 1 : _this.prevInfo.columnIndexes[0] - 1);\n if (xAxis && !colVFtable) {\n var idx = Object.keys(_this.vgenerator.cOffsets).length - _this.prevInfo.columnIndexes.length;\n var maxLeft = _this.vgenerator.cOffsets[idx - 1];\n x = x > maxLeft ? maxLeft : x; //TODO: This fix horizontal scrollbar jumping issue in column virtualization.\n }\n var y = _this.getTranslateY(e.top, height, xAxis && top === e.top ? _this.prevInfo : undefined, true);\n _this.virtualEle.adjustTable(colVFtable ? 0 : x, Math.min(y, _this.offsets[_this.maxBlock]));\n if (colVFtable) {\n _this.virtualEle.adjustMovableTable(x, 0);\n }\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(colVFtable ? 0 : x, 0);\n if (colVFtable) {\n _this.header.virtualEle.adjustMovableTable(x, 0);\n }\n }\n };\n };\n VirtualContentRenderer.prototype.dataBound = function () {\n this.parent.notify(events.refreshVirtualFrozenHeight, {});\n if (this.isSelection && this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n this.parent.selectRow(this.selectedRowIndex);\n }\n else {\n this.activeKey = this.empty;\n }\n };\n VirtualContentRenderer.prototype.rowSelected = function (args, isSelection) {\n if ((this.isSelection || isSelection) && !this.isLastBlockRow(args.rowIndex)) {\n var transform = getTransformValues(this.content.firstElementChild);\n var gridTop = this.parent.element.getBoundingClientRect().top;\n var rowTop = args.row.getBoundingClientRect().top - gridTop;\n var height = this.content.getBoundingClientRect().height;\n var isBottom = height < rowTop;\n var remainHeight = isBottom ? rowTop - height : this.initialRowTop - rowTop;\n var translateY = isBottom ? transform.height - remainHeight : transform.height + remainHeight;\n this.virtualEle.adjustTable(transform.width, translateY);\n var lastRowTop = this.content.querySelector('tbody').lastElementChild.getBoundingClientRect().top - gridTop;\n if (lastRowTop < height) {\n translateY = translateY + (height - (args.row.getBoundingClientRect().top - gridTop));\n this.virtualEle.adjustTable(transform.width, translateY - (this.parent.getRowHeight() / 2));\n }\n }\n this.isSelection = false;\n };\n VirtualContentRenderer.prototype.isLastBlockRow = function (index) {\n var scrollEle = this.parent.getContent().firstElementChild;\n var visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n var startIdx = (this.maxPage * this.parent.pageSettings.pageSize) - visibleRowCount;\n return index >= startIdx;\n };\n VirtualContentRenderer.prototype.refreshMaxPage = function () {\n if (this.parent.groupSettings.columns.length && this.parent.vcRows.length) {\n this.maxPage = Math.ceil(this.parent.vcRows.length / this.parent.pageSettings.pageSize);\n }\n };\n VirtualContentRenderer.prototype.setVirtualPageQuery = function (args) {\n var row = this.parent.getContent().querySelector('.e-row');\n if (row && this.parent.isManualRefresh && this.currentInfo.blockIndexes && this.currentInfo.blockIndexes.length === 3) {\n this.vgenerator.startIndex = parseInt(row.getAttribute('data-rowindex'), 10);\n this.vgenerator.currentInfo = extend({}, this.currentInfo);\n this.vgenerator.currentInfo.blockIndexes = this.currentInfo.blockIndexes.slice();\n var includePrevPage = this.vgenerator.includePrevPage = this.currentInfo.blockIndexes[0] % 2 === 0;\n if (includePrevPage) {\n this.vgenerator.startIndex = this.vgenerator.startIndex - this.getBlockSize();\n this.vgenerator.currentInfo.blockIndexes.unshift(this.currentInfo.blockIndexes[0] - 1);\n }\n else {\n this.vgenerator.currentInfo.blockIndexes.push(this.currentInfo.blockIndexes[this.currentInfo.blockIndexes.length - 1] + 1);\n }\n var skip = (this.vgenerator.currentInfo.blockIndexes[0] - 1) * this.getBlockSize();\n var take = this.vgenerator.currentInfo.blockIndexes.length * this.getBlockSize();\n args.query.skip(skip);\n args.query.take(take);\n args.skipPage = true;\n }\n };\n VirtualContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n this.parent[\"\" + action](dataReady, this.onDataReady, this);\n this.parent.addEventListener(events.dataBound, this.dataBound.bind(this));\n this.parent.addEventListener(events.actionBegin, this.actionBegin.bind(this));\n this.parent.addEventListener(events.actionComplete, this.actionComplete.bind(this));\n this.parent.addEventListener(events.rowSelected, this.rowSelected.bind(this));\n this.parent[\"\" + action](refreshVirtualBlock, this.refreshContentRows, this);\n this.parent[\"\" + action](events.refreshVirtualLazyLoadCache, this.refreshVirtualLazyLoadCache, this);\n this.parent[\"\" + action](events.selectVirtualRow, this.selectVirtualRow, this);\n this.parent[\"\" + action](events.virtaulCellFocus, this.virtualCellFocus, this);\n this.parent[\"\" + action](events.virtualScrollEditActionBegin, this.editActionBegin, this);\n this.parent[\"\" + action](events.virtualScrollAddActionBegin, this.addActionBegin, this);\n this.parent[\"\" + action](events.virtualScrollEdit, this.restoreEdit, this);\n this.parent[\"\" + action](events.virtualScrollEditSuccess, this.editSuccess, this);\n this.parent[\"\" + action](events.refreshVirtualCache, this.refreshCache, this);\n this.parent[\"\" + action](events.editReset, this.resetIsedit, this);\n this.parent[\"\" + action](events.getVirtualData, this.getVirtualData, this);\n this.parent[\"\" + action](events.virtualScrollEditCancel, this.editCancel, this);\n this.parent[\"\" + action](events.refreshVirtualMaxPage, this.refreshMaxPage, this);\n this.parent[\"\" + action](events.setVirtualPageQuery, this.setVirtualPageQuery, this);\n this.parent[\"\" + action](events.selectRowOnContextOpen, this.selectRowOnContextOpen, this);\n this.parent[\"\" + action](events.resetVirtualFocus, this.resetVirtualFocus, this);\n this.parent[\"\" + action](events.refreshVirtualEditFormCells, this.refreshCells, this);\n this.parent[\"\" + action](events.scrollToEdit, this.scrollToEdit, this);\n var event = this.actions;\n for (var i = 0; i < event.length; i++) {\n this.parent[\"\" + action](event[parseInt(i.toString(), 10)] + \"-begin\", this.onActionBegin, this);\n }\n var fn = function () {\n _this.observer.observe(function (scrollArgs) { return _this.scrollListener(scrollArgs); }, _this.onEntered());\n var gObj = _this.parent;\n if (gObj.enablePersistence && gObj.scrollPosition) {\n _this.content.scrollTop = gObj.scrollPosition.top;\n var scrollValues = { direction: 'down', sentinel: _this.observer.sentinelInfo.down,\n offset: gObj.scrollPosition, focusElement: gObj.element };\n _this.scrollListener(scrollValues);\n if (gObj.enableColumnVirtualization) {\n _this.content.scrollLeft = gObj.scrollPosition.left;\n }\n }\n _this.parent.off(contentReady, fn);\n };\n this.parent.on(contentReady, fn, this);\n };\n VirtualContentRenderer.prototype.refreshVirtualLazyLoadCache = function (e) {\n var blockIndex = this.currentInfo.blockIndexes;\n if (isNullOrUndefined(this.currentInfo.blockIndexes)) {\n blockIndex = [1, 2];\n }\n var block;\n var index;\n var cache;\n for (var i = 0; i < blockIndex.length; i++) {\n var rows = this.vgenerator.cache[blockIndex[parseInt(i.toString(), 10)]];\n for (var j = 0; j < rows.length; j++) {\n if (rows[parseInt(j.toString(), 10)].uid === e.uid) {\n block = blockIndex[parseInt(i.toString(), 10)];\n index = j;\n cache = rows;\n break;\n }\n }\n }\n if (e.count) {\n this.vgenerator.cache[parseInt(block.toString(), 10)].splice(index + 1, e.count);\n }\n else if (e.rows && e.rows.length) {\n this.vgenerator.cache[parseInt(block.toString(), 10)] = ([].slice.call(cache.slice(0, index + 1)).concat([].slice.call(e.rows))).concat([].slice.call(cache.slice(index + 1, cache.length)));\n }\n this.refreshOffsets();\n };\n VirtualContentRenderer.prototype.scrollToEdit = function (col) {\n var isFrozen = this.parent.isFrozenGrid();\n var allowScroll = true;\n this.validationCheck = true;\n if (this.isAdd && this.content.scrollTop > 0) {\n allowScroll = false;\n var keys = Object.keys(this.offsets);\n this.content.scrollTop = this.parent.editSettings.newRowPosition === 'Top' ? 0 : this.offsets[keys.length - 1];\n }\n var row = this.parent.getRowByIndex(this.editedRowIndex);\n if (!row && !isNullOrUndefined(this.editedRowIndex)) {\n if (!row || !this.isRowInView(row)) {\n var rowIndex = this.parent.getRowHeight();\n var scrollTop = this.editedRowIndex * rowIndex;\n if (!isNullOrUndefined(scrollTop)) {\n allowScroll = false;\n this.content.scrollTop = scrollTop;\n }\n }\n }\n if (col && allowScroll) {\n var offset = this.vgenerator.cOffsets[(col.index - this.parent.getVisibleFrozenColumns()) - 1];\n if (!this.parent.enableColumnVirtualization) {\n var header = this.parent.getHeaderContent().querySelector('.e-headercelldiv[e-mappinguid=\"' + col.uid + '\"]');\n offset = isFrozen ? header.parentElement.offsetLeft\n - this.parent.getFrozenVirtualHeader().offsetWidth\n : header.parentElement.offsetLeft;\n }\n if (isFrozen) {\n this.parent.getMovableVirtualContent().scrollLeft = this.parent.enableRtl ? -Math.abs(offset) : offset;\n }\n else {\n this.content.scrollLeft = this.parent.enableRtl ? -Math.abs(offset) : offset;\n }\n }\n if (col && !allowScroll) {\n this.validationCol = col;\n }\n };\n VirtualContentRenderer.prototype.refreshCells = function (rowObj) {\n rowObj.cells = this.vgenerator.generateCells(rowObj.foreignKeyData);\n };\n VirtualContentRenderer.prototype.resetVirtualFocus = function (e) {\n this.isCancel = e.isCancel;\n };\n /**\n * @param {Object} data - specifies the data\n * @param {Object} data.virtualData -specifies the data\n * @param {boolean} data.isAdd - specifies isAdd\n * @param {boolean} data.isCancel - specifies boolean in cancel\n * @param {boolean} data.isScroll - specifies boolean for scroll\n * @returns {void}\n * @hidden\n */\n VirtualContentRenderer.prototype.getVirtualData = function (data) {\n if (this.isNormaledit) {\n var error = this.parent.element.querySelector('.e-griderror:not([style*=\"display: none\"])');\n var keys = Object.keys(this.virtualData);\n data.isScroll = keys.length !== 0 && this.currentInfo.sentinelInfo && this.currentInfo.sentinelInfo.axis === 'X';\n if (error) {\n return;\n }\n this.virtualData = keys.length ? this.virtualData : data.virtualData;\n this.getVirtualEditedData(this.virtualData);\n data.virtualData = this.virtualData;\n data.isAdd = this.isAdd;\n data.isCancel = this.isCancel;\n }\n };\n VirtualContentRenderer.prototype.selectRowOnContextOpen = function (args) {\n this.isContextMenuOpen = args.isOpen;\n };\n VirtualContentRenderer.prototype.editCancel = function (args) {\n var dataIndex = getEditedDataIndex(this.parent, args.data);\n if (!isNullOrUndefined(dataIndex)) {\n args.data = this.parent.getCurrentViewRecords()[parseInt(dataIndex.toString(), 10)];\n }\n };\n VirtualContentRenderer.prototype.editSuccess = function (args) {\n if (this.isNormaledit) {\n if (!this.isAdd && args.data) {\n this.updateCurrentViewData(args.data);\n }\n this.isAdd = false;\n }\n };\n VirtualContentRenderer.prototype.updateCurrentViewData = function (data) {\n var dataIndex = getEditedDataIndex(this.parent, data);\n if (!isNullOrUndefined(dataIndex)) {\n this.parent.getCurrentViewRecords()[parseInt(dataIndex.toString(), 10)] = data;\n }\n };\n VirtualContentRenderer.prototype.actionBegin = function (args) {\n if (args.requestType !== 'virtualscroll') {\n this.requestType = args.requestType;\n }\n if (!args.cancel) {\n this.parent.notify(events.refreshVirtualFrozenRows, args);\n }\n };\n VirtualContentRenderer.prototype.virtualCellFocus = function (e) {\n // To decide the action (select or scroll), when using arrow keys for cell focus\n var ele = document.activeElement;\n if (!ele.classList.contains(literals.rowCell) && ele instanceof HTMLInputElement) {\n ele = ele.closest('.e-rowcell');\n }\n if (ele && ele.classList.contains(literals.rowCell)\n && e && (e.action === 'upArrow' || e.action === 'downArrow')) {\n var rowIndex = parseInt(ele.parentElement.getAttribute(literals.dataRowIndex), 10);\n if (e && (e.action === 'downArrow' || e.action === 'upArrow')) {\n var scrollEle = this.parent.getContent().firstElementChild;\n if (e.action === 'downArrow') {\n rowIndex += 1;\n }\n else {\n rowIndex -= 1;\n }\n this.rowIndex = rowIndex;\n this.cellIndex = parseInt(ele.getAttribute(literals.dataColIndex), 10);\n var row = this.parent.getRowByIndex(rowIndex);\n var page = this.parent.pageSettings.currentPage;\n var visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n var emptyRow = false;\n if (isNullOrUndefined(row)) {\n emptyRow = true;\n if ((e.action === 'downArrow' && page === this.maxPage - 1) || (e.action === 'upArrow' && page === 1)) {\n emptyRow = false;\n }\n }\n if (emptyRow || (ensureLastRow(row, this.parent) && e.action === 'downArrow')\n || (ensureFirstRow(row, this.parent.getRowHeight() * 2) && e.action === 'upArrow')) {\n this.activeKey = e.action;\n scrollEle.scrollTop = e.action === 'downArrow' ?\n (rowIndex - visibleRowCount) * this.parent.getRowHeight() : rowIndex * this.parent.getRowHeight();\n }\n else {\n this.activeKey = this.empty;\n }\n if (!this.parent.selectionSettings.checkboxOnly) {\n this.parent.selectRow(rowIndex);\n }\n }\n }\n };\n VirtualContentRenderer.prototype.editActionBegin = function (e) {\n this.editedRowIndex = e.index;\n var rowData = extend({}, this.getRowObjectByIndex(e.index));\n var keys = Object.keys(this.virtualData);\n e.data = keys.length ? this.virtualData : rowData;\n e.isScroll = keys.length !== 0 && this.currentInfo.sentinelInfo && this.currentInfo.sentinelInfo.axis === 'X';\n };\n VirtualContentRenderer.prototype.getEditedRowObject = function () {\n var rowObjects = this.parent.vcRows;\n var editedrow;\n for (var i = 0; i < rowObjects.length; i++) {\n if (rowObjects[parseInt(i.toString(), 10)].index === this.editedRowIndex) {\n editedrow = rowObjects[parseInt(i.toString(), 10)];\n }\n }\n return editedrow;\n };\n VirtualContentRenderer.prototype.refreshCache = function (args) {\n var block = Math.ceil((this.editedRowIndex + 1) / this.getBlockSize());\n var index = this.editedRowIndex - ((block - 1) * this.getBlockSize());\n if (this.parent.groupSettings.columns.length) {\n this.getEditedRowObject().data = args.data;\n }\n else {\n this.vgenerator.cache[parseInt(block.toString(), 10)][parseInt(index.toString(), 10)].data = args.data;\n if (this.vgenerator.movableCache[parseInt(block.toString(), 10)]) {\n this.vgenerator.movableCache[parseInt(block.toString(), 10)][parseInt(index.toString(), 10)].data = args.data;\n }\n if (this.vgenerator.frozenRightCache[parseInt(block.toString(), 10)]) {\n this.vgenerator.frozenRightCache[parseInt(block.toString(), 10)][parseInt(index.toString(), 10)].data = args.data;\n }\n }\n };\n VirtualContentRenderer.prototype.actionComplete = function (args) {\n if (!this.parent.enableVirtualization) {\n return;\n }\n var editRequestTypes = ['delete', 'save', 'cancel'];\n var dataActionRequestTypes = ['sorting', 'filtering', 'grouping', 'refresh', 'searching', 'ungrouping', 'reorder'];\n if (editRequestTypes.some(function (value) { return value === args.requestType; })) {\n this.refreshOffsets();\n if (this.parent.isFrozenGrid()) {\n this.vgenerator.refreshColOffsets();\n this.parent.contentModule.virtualRenderer.virtualEle.setVirtualHeight();\n }\n else {\n this.refreshVirtualElement();\n }\n }\n if (this.isNormaledit && (dataActionRequestTypes.some(function (value) { return value === args.requestType; })\n || editRequestTypes.some(function (value) { return value === args.requestType; }))) {\n this.isCancel = true;\n this.isAdd = false;\n this.editedRowIndex = this.empty;\n this.virtualData = {};\n if (this.parent.editModule) {\n this.parent.editModule.editModule.previousData = undefined;\n }\n }\n if (this.parent.enableColumnVirtualization && args.requestType === 'filterafteropen'\n && this.currentInfo.columnIndexes && this.currentInfo.columnIndexes[0] > 0) {\n this.parent.resetFilterDlgPosition(args.columnName);\n }\n };\n VirtualContentRenderer.prototype.resetIsedit = function () {\n if (this.parent.enableVirtualization && this.isNormaledit) {\n if ((this.parent.editSettings.allowEditing && Object.keys(this.virtualData).length)\n || (this.parent.editSettings.allowAdding && this.isAdd)) {\n this.parent.isEdit = true;\n }\n }\n };\n VirtualContentRenderer.prototype.scrollAfterEdit = function () {\n if (this.parent.editModule && this.parent.editSettings.allowEditing && this.isNormaledit) {\n if (this.parent.element.querySelector('.e-gridform')) {\n var editForm = this.parent.element.querySelector('.' + literals.editedRow);\n var addForm = this.parent.element.querySelector('.' + literals.addedRow);\n if (editForm || addForm) {\n var rowData = editForm ? extend({}, this.getRowObjectByIndex(this.editedRowIndex))\n : extend({}, this.emptyRowData);\n var keys = Object.keys(this.virtualData);\n this.virtualData = keys.length ? this.getVirtualEditedData(this.virtualData) : this.getVirtualEditedData(rowData);\n }\n }\n }\n };\n VirtualContentRenderer.prototype.createEmptyRowdata = function () {\n var _this = this;\n this.parent.columnModel.filter(function (e) {\n _this.emptyRowData[e.field] = _this.empty;\n });\n };\n VirtualContentRenderer.prototype.addActionBegin = function (args) {\n if (this.isNormaledit) {\n if (!Object.keys(this.emptyRowData).length) {\n this.createEmptyRowdata();\n }\n this.isAdd = true;\n var page = this.parent.pageSettings.currentPage;\n if (!this.parent.frozenRows && this.content.scrollTop > 0 && this.parent.editSettings.newRowPosition === 'Top') {\n this.isAdd = true;\n this.onActionBegin();\n args.startEdit = false;\n this.content.scrollTop = 0;\n }\n if (page < this.maxPage - 1 && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.isAdd = true;\n this.parent.setProperties({ pageSettings: { currentPage: this.maxPage - 1 } }, true);\n args.startEdit = false;\n this.content.scrollTop = this.offsets[this.offsetKeys.length];\n }\n }\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Object} returns the object\n * @hidden\n */\n VirtualContentRenderer.prototype.getRowObjectByIndex = function (index) {\n var data = this.getRowCollection(index, false, true);\n return data;\n };\n VirtualContentRenderer.prototype.getBlockSize = function () {\n return this.parent.pageSettings.pageSize >> 1;\n };\n VirtualContentRenderer.prototype.getBlockHeight = function () {\n return this.getBlockSize() * this.parent.getRowHeight();\n };\n VirtualContentRenderer.prototype.isEndBlock = function (index) {\n var totalBlocks = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n return index >= totalBlocks || index === totalBlocks - 1;\n };\n VirtualContentRenderer.prototype.getGroupedTotalBlocks = function () {\n var rows = this.parent.vcRows;\n return Math.floor((rows.length / this.getBlockSize()) < 1 ? 1 : rows.length / this.getBlockSize());\n };\n VirtualContentRenderer.prototype.getTotalBlocks = function () {\n return Math.ceil(this.count / this.getBlockSize());\n };\n VirtualContentRenderer.prototype.getColumnOffset = function (block) {\n return this.vgenerator.cOffsets[parseInt(block.toString(), 10)] | 0;\n };\n VirtualContentRenderer.prototype.getModelGenerator = function () {\n return new VirtualRowModelGenerator(this.parent);\n };\n VirtualContentRenderer.prototype.resetScrollPosition = function (action) {\n if (this.actions.some(function (value) { return value === action; })) {\n this.preventEvent = this.content.scrollTop !== 0;\n this.content.scrollTop = 0;\n }\n if (action !== 'virtualscroll') {\n this.isAdd = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.onActionBegin = function (e) {\n //Update property silently..\n this.parent.setProperties({ pageSettings: { currentPage: 1 } }, true);\n };\n VirtualContentRenderer.prototype.getRows = function () {\n return this.vgenerator.getRows();\n };\n VirtualContentRenderer.prototype.getRowByIndex = function (index) {\n var row;\n if (isGroupAdaptive(this.parent)) {\n row = !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n }\n else if (this.prevInfo) {\n row = this.getRowCollection(index, false);\n }\n return row;\n };\n VirtualContentRenderer.prototype.getMovableVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, true);\n };\n VirtualContentRenderer.prototype.getFrozenRightVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, false, false, true);\n };\n VirtualContentRenderer.prototype.getRowCollection = function (index, isMovable, isRowObject, isFrozenRight) {\n var prev = this.prevInfo.blockIndexes;\n var startIdx = (prev[0] - 1) * this.getBlockSize();\n var rowCollection = isMovable ? this.parent.getMovableDataRows() : this.parent.getDataRows();\n rowCollection = isFrozenRight ? this.parent.getFrozenRightDataRows() : rowCollection;\n var collection = isRowObject ? this.parent.getCurrentViewRecords() : rowCollection;\n if (isRowObject && this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n startIdx = parseInt(this.parent.getRows()[0].getAttribute(literals.dataRowIndex), 10);\n collection = collection.filter(function (m) { return isNullOrUndefined(m.items); });\n }\n var selectedRow = collection[index - startIdx];\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n if (!isRowObject) {\n selectedRow = index <= this.parent.frozenRows ? rowCollection[parseInt(index.toString(), 10)]\n : rowCollection[(index - startIdx) + this.parent.frozenRows];\n }\n else {\n selectedRow = index <= this.parent.frozenRows ? this.parent.getRowsObject()[parseInt(index.toString(), 10)].data\n : selectedRow;\n }\n }\n return selectedRow;\n };\n VirtualContentRenderer.prototype.getVirtualRowIndex = function (index) {\n var prev = this.prevInfo.blockIndexes;\n var startIdx = (prev[0] - 1) * this.getBlockSize();\n return startIdx + index;\n };\n /**\n * @returns {void}\n * @hidden */\n VirtualContentRenderer.prototype.refreshOffsets = function () {\n var gObj = this.parent;\n var row = 0;\n var bSize = this.getBlockSize();\n var total = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n this.prevHeight = this.offsets[parseInt(total.toString(), 10)];\n this.maxBlock = total % 2 === 0 ? total - 2 : total - 1;\n this.offsets = {};\n //Row offset update\n // eslint-disable-next-line prefer-spread\n var blocks = Array.apply(null, Array(total)).map(function () { return ++row; });\n for (var i = 0; i < blocks.length; i++) {\n var tmp = (this.vgenerator.cache[blocks[parseInt(i.toString(), 10)]] || []).length;\n var rem = !isGroupAdaptive(this.parent) ? this.count % bSize : (gObj.vcRows.length % bSize);\n var size = !isGroupAdaptive(this.parent) && blocks[parseInt(i.toString(), 10)] in this.vgenerator.cache ?\n tmp * this.parent.getRowHeight() : rem && blocks[parseInt(i.toString(), 10)] === total ? rem * this.parent.getRowHeight() :\n this.getBlockHeight();\n // let size: number = this.parent.groupSettings.columns.length && block in this.vgenerator.cache ?\n // tmp * getRowHeight() : this.getBlockHeight();\n this.offsets[blocks[parseInt(i.toString(), 10)]] = (this.offsets[blocks[parseInt(i.toString(), 10)] - 1] | 0) + size;\n this.tmpOffsets[blocks[parseInt(i.toString(), 10)]] = this.offsets[blocks[parseInt(i.toString(), 10)] - 1] | 0;\n }\n this.offsetKeys = Object.keys(this.offsets);\n if (isGroupAdaptive(this.parent)) {\n this.parent.vGroupOffsets = this.offsets;\n }\n //Column offset update\n if (this.parent.enableColumnVirtualization) {\n this.vgenerator.refreshColOffsets();\n }\n };\n VirtualContentRenderer.prototype.refreshVirtualElement = function () {\n this.vgenerator.refreshColOffsets();\n this.setVirtualHeight();\n };\n VirtualContentRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var frozenCols = this.parent.getFrozenColumns();\n var fcntColGrp;\n var mcntColGrp;\n if (frozenCols) {\n fcntColGrp = [].slice.call(this.parent.getFrozenVirtualContent().querySelectorAll('col'));\n mcntColGrp = [].slice.call(this.parent.getMovableVirtualContent().querySelectorAll('col'));\n }\n var rows = [];\n rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var isRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n isRefresh = false;\n }\n var tr = gObj.getDataRows();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = gObj.getNormalizedColumnIndex(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n var colGrp = void 0;\n if (fcntColGrp && mcntColGrp) {\n if (idx >= frozenCols) {\n colGrp = mcntColGrp;\n tr = this.parent.getMovableRows();\n idx = idx - frozenCols;\n }\n else {\n colGrp = fcntColGrp;\n }\n }\n else {\n colGrp = this.getColGroup().children;\n }\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(colGrp[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n if (!isRefresh) {\n var width = void 0;\n if (column.width) {\n if (column.visible) {\n width = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n width = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n }\n if (width > gObj.width) {\n this.setDisplayNone(tr, idx, displayVal, rows);\n if (this.parent.enableColumnVirtualization) {\n this.virtualEle.setWrapperWidth(width + '');\n }\n this.refreshVirtualElement();\n }\n else {\n isRefresh = true;\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (isRefresh || frozenCols) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: rows, args: { isFrozen: false, rows: rows } });\n }\n };\n VirtualContentRenderer.prototype.selectVirtualRow = function (args) {\n var _this = this;\n args.isAvailable = args.selectedIndex < this.count;\n if (args.isAvailable && !this.isContextMenuOpen && this.activeKey !== 'upArrow'\n && this.activeKey !== 'downArrow' && !this.isSelection && !this.requestTypes.some(function (value) { return value === _this.requestType; })\n && !this.parent.selectionModule.isInteracted) {\n var selectedRow = this.parent.getRowByIndex(args.selectedIndex);\n var rowHeight = this.parent.getRowHeight();\n if (!selectedRow || !this.isRowInView(selectedRow)) {\n this.isSelection = true;\n this.selectedRowIndex = args.selectedIndex;\n var scrollTop = (args.selectedIndex + 1) * rowHeight;\n if (!isNullOrUndefined(scrollTop)) {\n var direction = this.content.scrollTop < scrollTop ? 'down' : 'up';\n this.selectRowIndex = args.selectedIndex;\n this.content.scrollTop = scrollTop;\n this.isSelectionScroll = this.observer.check(direction);\n }\n }\n }\n if (this.parent.isFrozenGrid() && this.requestType) {\n if (this.parent.getTablesCount() === this.frzIdx) {\n this.requestType = this.empty;\n this.frzIdx = 1;\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.requestType = this.empty;\n }\n };\n VirtualContentRenderer.prototype.isRowInView = function (row) {\n var top = row.getBoundingClientRect().top;\n var bottom = row.getBoundingClientRect().bottom;\n return (top >= this.content.getBoundingClientRect().top && bottom <= this.content.getBoundingClientRect().bottom);\n };\n return VirtualContentRenderer;\n}(ContentRender));\nexport { VirtualContentRenderer };\n/**\n * @hidden\n */\nvar VirtualHeaderRenderer = /** @class */ (function (_super) {\n __extends(VirtualHeaderRenderer, _super);\n function VirtualHeaderRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.virtualEle = new VirtualElementHandler();\n _this.isMovable = false;\n _this.gen = new VirtualRowModelGenerator(_this.parent);\n _this.parent.on(events.columnVisibilityChanged, _this.setVisible, _this);\n _this.parent.on(refreshVirtualBlock, function (e) { return e.virtualInfo.sentinelInfo.axis === 'X' ? _this.refreshUI() : null; }, _this);\n return _this;\n }\n VirtualHeaderRenderer.prototype.renderTable = function () {\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.' + literals.headerContent)));\n _super.prototype.renderTable.call(this);\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.getPanel().querySelector('.' + literals.headerContent);\n this.virtualEle.content.style.position = 'relative';\n this.virtualEle.renderWrapper();\n this.virtualEle.renderPlaceHolder('absolute');\n };\n VirtualHeaderRenderer.prototype.appendContent = function (table) {\n if (!this.isMovable) {\n this.virtualEle.wrapper.appendChild(table);\n }\n else {\n this.virtualEle.movableWrapper.appendChild(table);\n this.isMovable = false;\n }\n };\n VirtualHeaderRenderer.prototype.refreshUI = function () {\n this.isMovable = this.parent.isFrozenGrid();\n this.setFrozenTable(this.parent.getMovableVirtualContent());\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.' + literals.headerContent)));\n _super.prototype.refreshUI.call(this);\n this.setFrozenTable(this.parent.getFrozenVirtualContent());\n };\n VirtualHeaderRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var needFullRefresh;\n var frozenCols = this.parent.getFrozenColumns();\n var fhdrColGrp;\n var mhdrColGrp;\n if (frozenCols) {\n fhdrColGrp = [].slice.call(this.parent.getFrozenVirtualHeader().querySelectorAll('col'));\n mhdrColGrp = [].slice.call(this.parent.getMovableVirtualHeader().querySelectorAll('col'));\n }\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n var colGrp = void 0;\n if (fhdrColGrp && mhdrColGrp) {\n if (idx >= frozenCols) {\n colGrp = mhdrColGrp;\n idx = idx - frozenCols;\n }\n else {\n colGrp = fhdrColGrp;\n }\n }\n else {\n colGrp = this.getColGroup().children;\n }\n setStyleAttribute(colGrp[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (gObj.enableColumnVirtualization && !gObj.groupSettings.columns.length) {\n var tablewidth = void 0;\n if (column.visible) {\n tablewidth = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n tablewidth = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n if (tablewidth > gObj.width) {\n this.setDisplayNone(column, displayVal);\n this.virtualEle.setWrapperWidth(tablewidth + '');\n this.gen.refreshColOffsets();\n }\n else {\n needFullRefresh = true;\n }\n }\n else {\n needFullRefresh = true;\n }\n if (needFullRefresh && !frozenCols) {\n this.refreshUI();\n }\n }\n if (frozenCols) {\n this.parent.notify(events.columnPositionChanged, {});\n }\n };\n VirtualHeaderRenderer.prototype.setFrozenTable = function (content) {\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization\n && this.parent.contentModule.isXaxis()) {\n this.parent.contentModule\n .setTable(content.querySelector('.' + literals.table + ':not(.e-masked-table)'));\n }\n };\n VirtualHeaderRenderer.prototype.setDisplayNone = function (col, displayVal) {\n var frozenCols = this.parent.isFrozenGrid();\n var table = this.getTable();\n if (frozenCols && col.getFreezeTableName() === 'movable') {\n table = this.parent.getMovableVirtualHeader().querySelector('.' + literals.table);\n }\n for (var _i = 0, _a = [].slice.apply(table.querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === col.uid) {\n setStyleAttribute(ele, { 'display': displayVal });\n if (displayVal === '') {\n removeClass([ele], 'e-hide');\n }\n break;\n }\n }\n };\n return VirtualHeaderRenderer;\n}(HeaderRender));\nexport { VirtualHeaderRenderer };\n/**\n * @hidden\n */\nvar VirtualElementHandler = /** @class */ (function () {\n function VirtualElementHandler() {\n }\n VirtualElementHandler.prototype.renderWrapper = function (height) {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) });\n this.wrapper.appendChild(this.table);\n this.content.appendChild(this.wrapper);\n };\n VirtualElementHandler.prototype.renderPlaceHolder = function (position) {\n if (position === void 0) { position = 'relative'; }\n this.placeholder = createElement('div', { className: 'e-virtualtrack', styles: \"position:\" + position });\n this.content.appendChild(this.placeholder);\n };\n VirtualElementHandler.prototype.renderFrozenWrapper = function (height) {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) + \"; display: flex\" });\n this.content.appendChild(this.wrapper);\n };\n VirtualElementHandler.prototype.renderFrozenPlaceHolder = function () {\n this.placeholder = createElement('div', { className: 'e-virtualtrack' });\n this.content.appendChild(this.placeholder);\n };\n VirtualElementHandler.prototype.renderMovableWrapper = function (height) {\n this.movableWrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) });\n this.movableContent.appendChild(this.movableWrapper);\n };\n VirtualElementHandler.prototype.renderMovablePlaceHolder = function () {\n this.movablePlaceholder = createElement('div', { className: 'e-virtualtrack' });\n this.movableContent.appendChild(this.movablePlaceholder);\n };\n VirtualElementHandler.prototype.adjustTable = function (xValue, yValue) {\n this.wrapper.style.transform = \"translate(\" + xValue + \"px, \" + yValue + \"px)\";\n };\n VirtualElementHandler.prototype.adjustMovableTable = function (xValue, yValue) {\n this.movableWrapper.style.transform = \"translate(\" + xValue + \"px, \" + yValue + \"px)\";\n };\n VirtualElementHandler.prototype.setMovableWrapperWidth = function (width, full) {\n this.movableWrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n VirtualElementHandler.prototype.setMovableVirtualHeight = function (height, width) {\n this.movablePlaceholder.style.height = height + \"px\";\n this.movablePlaceholder.style.width = width;\n };\n VirtualElementHandler.prototype.setWrapperWidth = function (width, full) {\n this.wrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n VirtualElementHandler.prototype.setVirtualHeight = function (height, width) {\n this.placeholder.style.height = !isNullOrUndefined(height) ? height + \"px\" : '0px';\n this.placeholder.style.width = width;\n };\n VirtualElementHandler.prototype.setFreezeWrapperWidth = function (wrapper, width, full) {\n wrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n return VirtualElementHandler;\n}());\nexport { VirtualElementHandler };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { FreezeContentRender, FreezeRender } from './freeze-renderer';\nimport { ColumnFreezeContentRenderer } from './column-freeze-renderer';\nimport { VirtualContentRenderer, VirtualHeaderRenderer } from './virtual-content-renderer';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { FreezeRowModelGenerator } from '../services/freeze-row-model-generator';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { RenderType } from '../base/enum';\nimport { InterSectionObserver } from '../services/intersection-observer';\nimport * as events from '../base/constant';\nimport { splitFrozenRowObjectCells } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * VirtualFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar VirtualFreezeRenderer = /** @class */ (function (_super) {\n __extends(VirtualFreezeRenderer, _super);\n function VirtualFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n /** @hidden */\n _this.frzRows = [];\n /** @hidden */\n _this.mvblRows = [];\n /** @hidden */\n _this.frRows = [];\n _this.serviceLoc = locator;\n _this.eventListener('on');\n _this.rowModelGenerator = new RowModelGenerator(_this.parent);\n return _this;\n }\n VirtualFreezeRenderer.prototype.eventListener = function (action) {\n this.parent[\"\" + action](events.getVirtualData, this.getVirtualData, this);\n this.parent[\"\" + action](events.setFreezeSelection, this.setFreezeSelection, this);\n this.parent[\"\" + action](events.refreshVirtualFrozenRows, this.refreshVirtualFrozenRows, this);\n this.parent.addEventListener(events.actionComplete, this.actionComplete.bind(this));\n };\n VirtualFreezeRenderer.prototype.actionComplete = function (args) {\n if (args.requestType === 'delete' && this.parent.frozenRows) {\n for (var i = 0; i < this.parent.frozenRows; i++) {\n setCache(this, i);\n }\n }\n };\n VirtualFreezeRenderer.prototype.refreshVirtualFrozenRows = function (args) {\n var _this = this;\n var gObj = this.parent;\n if (args.requestType === 'delete' && gObj.frozenRows) {\n args.isFrozenRowsRender = true;\n var query = gObj.renderModule.data.generateQuery(true).clone();\n query.page(1, gObj.pageSettings.pageSize);\n gObj.renderModule.data.getData({}, query).then(function (e) {\n renderFrozenRows(args, e.result, gObj.getSelectedRowIndexes(), gObj, _this.rowModelGenerator, _this.serviceLoc, _this.virtualRenderer, _this);\n });\n }\n };\n VirtualFreezeRenderer.prototype.getVirtualData = function (data) {\n this.virtualRenderer.getVirtualData(data);\n };\n VirtualFreezeRenderer.prototype.setFreezeSelection = function (args) {\n setFreezeSelectionAction(args, this.virtualRenderer);\n };\n /**\n * @returns {void}\n * @hidden\n */\n VirtualFreezeRenderer.prototype.renderTable = function () {\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n this.virtualRenderer = new VirtualContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n _super.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var movableCont = this.getMovableContent();\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n if (this.parent.enableColumnVirtualization) {\n this.virtualRenderer.virtualEle.movableContent = this.virtualRenderer.movableContent\n = this.getPanel().querySelector('.' + literals.movableContent);\n this.virtualRenderer.virtualEle.renderMovableWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderMovablePlaceHolder();\n var tbl = movableCont.querySelector('table');\n this.virtualRenderer.virtualEle.movableTable = tbl;\n this.virtualRenderer.virtualEle.movableWrapper.appendChild(tbl);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movableWrapper);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movablePlaceholder);\n }\n this.virtualRenderer.virtualEle.wrapper.appendChild(this.getFrozenContent());\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n /**\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newChild\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n VirtualFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n appendContent(this.virtualRenderer, this.widthService, target, newChild, e);\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {NotifyArgs} notifyArgs - specifies the notifyargs\n * @returns {Row[]} returns the row\n * @hidden\n */\n VirtualFreezeRenderer.prototype.generateRows = function (data, notifyArgs) {\n if (!this.firstPageRecords) {\n this.firstPageRecords = data;\n }\n return generateRows(this.virtualRenderer, data, notifyArgs, this.freezeRowGenerator, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getRowByIndex = function (index) {\n return this.virtualRenderer.getRowByIndex(index);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getMovableRowByIndex = function (index) {\n return this.virtualRenderer.getMovableVirtualRowByIndex(index);\n };\n VirtualFreezeRenderer.prototype.collectRows = function (tableName) {\n return collectRows(tableName, this.virtualRenderer, this.parent);\n };\n /**\n * @returns {HTMLCollection} returns the Htmlcollection\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getMovableRows = function () {\n return this.collectRows('movable');\n };\n /**\n * @returns {HTMLCollectionOf} returns the html collection\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getRows = function () {\n return this.collectRows('frozen-left');\n };\n /**\n * @returns {Element} returns the element\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getColGroup = function () {\n var mCol = this.parent.getMovableVirtualContent();\n return this.isXaxis() ? mCol.querySelector(literals.colGroup + ':not(.e-masked-colgroup)') : this.colgroup;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {Row[]} returns the row\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getReorderedFrozenRows = function (args) {\n return getReorderedFrozenRows(args, this.virtualRenderer, this.parent, this.freezeRowGenerator, this.firstPageRecords);\n };\n VirtualFreezeRenderer.prototype.isXaxis = function () {\n return isXaxis(this.virtualRenderer);\n };\n VirtualFreezeRenderer.prototype.getHeaderCells = function () {\n return getHeaderCells(this.virtualRenderer, this.parent);\n };\n VirtualFreezeRenderer.prototype.getVirtualFreezeHeader = function () {\n return getVirtualFreezeHeader(this.virtualRenderer, this.parent);\n };\n VirtualFreezeRenderer.prototype.ensureFrozenCols = function (columns) {\n return ensureFrozenCols(columns, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {object} returns the object\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getRowObjectByIndex = function (index) {\n return this.virtualRenderer.getRowObjectByIndex(index);\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n VirtualFreezeRenderer.prototype.setColGroup = function (colGroup) {\n return setColGroup(colGroup, this.virtualRenderer, this);\n };\n return VirtualFreezeRenderer;\n}(FreezeContentRender));\nexport { VirtualFreezeRenderer };\n/**\n * VirtualFreezeHdrRenderer is used to render the virtual table within the frozen and movable header table\n *\n * @hidden\n */\nvar VirtualFreezeHdrRenderer = /** @class */ (function (_super) {\n __extends(VirtualFreezeHdrRenderer, _super);\n function VirtualFreezeHdrRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.serviceLoc = locator;\n return _this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n VirtualFreezeHdrRenderer.prototype.renderTable = function () {\n this.virtualHdrRenderer = new VirtualHeaderRenderer(this.parent, this.serviceLoc);\n this.virtualHdrRenderer.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.virtualHdrRenderer.gen.getColumnIndexes(this.getPanel()\n .querySelector('.' + literals.headerContent)));\n this.virtualHdrRenderer.virtualEle.content = this.getPanel().querySelector('.' + literals.headerContent);\n this.virtualHdrRenderer.virtualEle.renderFrozenWrapper();\n this.virtualHdrRenderer.virtualEle.renderFrozenPlaceHolder();\n if (this.parent.enableColumnVirtualization) {\n this.virtualHdrRenderer.virtualEle.movableContent = this.getPanel().querySelector('.' + literals.movableHeader);\n this.virtualHdrRenderer.virtualEle.renderMovableWrapper();\n this.virtualHdrRenderer.virtualEle.renderMovablePlaceHolder();\n }\n _super.prototype.renderTable.call(this);\n this.virtualHdrRenderer.setPanel(this.parent.getHeaderContent());\n };\n VirtualFreezeHdrRenderer.prototype.rfshMovable = function () {\n this.getFrozenHeader().appendChild(this.getTable());\n this.virtualHdrRenderer.virtualEle.wrapper.appendChild(this.getFrozenHeader());\n if (this.parent.enableColumnVirtualization) {\n this.virtualHdrRenderer.virtualEle.movableWrapper.appendChild(this.createHeader(undefined, 'movable'));\n }\n else {\n this.getMovableHeader().appendChild(this.createTable());\n }\n this.virtualHdrRenderer.virtualEle.wrapper.appendChild(this.getMovableHeader());\n };\n return VirtualFreezeHdrRenderer;\n}(FreezeRender));\nexport { VirtualFreezeHdrRenderer };\n/**\n * @param {NotifyArgs} args - specifies the args\n * @param {Object[]} data - specifies the data\n * @param {number[]}selectedIdx - specifies the selected index\n * @param {IGrid} parent - specifies the IGrid\n * @param {IModelGenerator} rowModelGenerator - specifies the rowModeGenerator\n * @param {ServiceLocator} locator - specifies the locator\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {VirtualFreezeRenderer} instance - specifies the instance\n * @returns {void}\n * @hidden\n */\nexport function renderFrozenRows(args, data, selectedIdx, parent, rowModelGenerator, locator, virtualRenderer, instance) {\n parent.clearSelection();\n args.startIndex = 0;\n var rowRenderer = new RowRenderer(locator, null, parent);\n var rows = rowModelGenerator.generateRows(data, args);\n if (args.renderMovableContent) {\n virtualRenderer.vgenerator.movableCache[1] = rows;\n rows = parent.getMovableRowsObject();\n }\n else if (!args.renderFrozenRightContent && !args.renderMovableContent) {\n virtualRenderer.vgenerator.cache[1] = rows;\n rows = parent.getRowsObject();\n }\n else if (args.renderFrozenRightContent) {\n virtualRenderer.vgenerator.frozenRightCache[1] = rows;\n rows = parent.getFrozenRightRowsObject();\n }\n var hdr = !args.renderMovableContent && !args.renderFrozenRightContent\n ? parent.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody) : args.renderMovableContent\n ? parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody)\n : parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody);\n hdr.innerHTML = '';\n for (var i = 0; i < parent.frozenRows; i++) {\n hdr.appendChild(rowRenderer.render(rows[parseInt(i.toString(), 10)], parent.getColumns()));\n if (selectedIdx.indexOf(i) > -1) {\n rows[parseInt(i.toString(), 10)].isSelected = true;\n for (var k = 0; k < rows[parseInt(i.toString(), 10)].cells.length; k++) {\n rows[parseInt(i.toString(), 10)].cells[parseInt(k.toString(), 10)].isSelected = true;\n }\n }\n }\n if (args.renderMovableContent) {\n instance.mvblRows = virtualRenderer.vgenerator.movableCache[1];\n }\n else if (!args.renderMovableContent && !args.renderFrozenRightContent) {\n instance.frzRows = virtualRenderer.vgenerator.cache[1];\n }\n else if (args.renderFrozenRightContent) {\n instance.frRows = virtualRenderer.vgenerator.frozenRightCache[1];\n }\n args.renderMovableContent = !args.renderMovableContent && !args.renderFrozenRightContent;\n args.renderFrozenRightContent = parent.getFrozenMode() === literals.leftRight\n && !args.renderMovableContent && !args.renderFrozenRightContent;\n if (args.renderMovableContent || args.renderFrozenRightContent) {\n renderFrozenRows(args, data, selectedIdx, parent, rowModelGenerator, locator, virtualRenderer, instance);\n if (!args.renderMovableContent && !args.renderFrozenRightContent) {\n args.isFrozenRowsRender = false;\n }\n }\n}\n/**\n * @param {Row[]} data - specifies the data\n * @param {freezeTable} tableName -specifies the table\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Row[]} returns the row\n * @hidden\n */\nexport function splitCells(data, tableName, parent) {\n var rows = [];\n for (var i = 0; i < data.length; i++) {\n rows.push(extend({}, data[parseInt(i.toString(), 10)]));\n rows[parseInt(i.toString(), 10)].cells = splitFrozenRowObjectCells(parent, rows[parseInt(i.toString(), 10)].cells, tableName);\n }\n return rows;\n}\n/**\n * @param {freezeTable} tableName - specifies the freeze tabel\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Row[]} returns the row\n * @hidden\n */\nexport function collectRows(tableName, virtualRenderer, parent) {\n var rows = [];\n var cache;\n if (tableName === literals.frozenLeft) {\n cache = virtualRenderer.vgenerator.cache;\n }\n else if (tableName === 'movable') {\n cache = virtualRenderer.vgenerator.movableCache;\n }\n else if (tableName === literals.frozenRight) {\n cache = parent.getFrozenMode() === 'Right' ? virtualRenderer.vgenerator.cache : virtualRenderer.vgenerator.frozenRightCache;\n }\n var keys = Object.keys(cache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(splitCells(cache[keys[parseInt(i.toString(), 10)]], tableName, parent));\n }\n return rows;\n}\n/**\n * @param {object} args - specifies the args\n * @param {string} args.uid - specifirs the uid\n * @param {boolean} args.set - specifies the set\n * @param {boolean} args.clearAll - specifies the boolean to clearall\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @returns {void}\n * @hidden\n */\nexport function setFreezeSelectionAction(args, virtualRenderer) {\n var leftKeys = Object.keys(virtualRenderer.vgenerator.cache);\n var movableKeys = Object.keys(virtualRenderer.vgenerator.movableCache);\n var rightKeys = Object.keys(virtualRenderer.vgenerator.frozenRightCache);\n for (var i = 0; i < leftKeys.length; i++) {\n selectFreezeRows(args, virtualRenderer.vgenerator.cache[leftKeys[parseInt(i.toString(), 10)]]);\n }\n for (var i = 0; i < movableKeys.length; i++) {\n selectFreezeRows(args, virtualRenderer.vgenerator.movableCache[movableKeys[parseInt(i.toString(), 10)]]);\n }\n for (var i = 0; i < rightKeys.length; i++) {\n selectFreezeRows(args, virtualRenderer.vgenerator.frozenRightCache[rightKeys[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {Object} args - specifies the args\n * @param {string} args.uid - specifirs the uid\n * @param {boolean} args.set - specifies the set\n * @param {boolean} args.clearAll - specifies the boolean to clearall\n * @param {Row[]} cache - specifies the cache\n * @returns {void}\n * @hidden\n */\nexport function selectFreezeRows(args, cache) {\n var rows = cache.filter(function (row) { return args.clearAll || args.uid === row.uid; });\n for (var j = 0; j < rows.length; j++) {\n rows[parseInt(j.toString(), 10)].isSelected = args.set;\n var cells = rows[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = args.set;\n }\n }\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {ColumnWidthService} widthService - specifies the width service\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newchild\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\nexport function appendContent(virtualRenderer, widthService, target, newChild, e) {\n virtualRenderer.appendContent(target, newChild, e);\n widthService.refreshFrozenScrollbar();\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {object[]} data - specifies the data\n * @param {NotifyArgs} notifyArgs - specifies the notifyargs\n * @param {FreezeRowModelGenerator} freezeRowGenerator - specifies the freeze row generator\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Row[]} returns the row\n * @hidden\n */\nexport function generateRows(virtualRenderer, data, notifyArgs, freezeRowGenerator, parent) {\n var virtualRows = virtualRenderer.vgenerator.generateRows(data, notifyArgs);\n var arr = [];\n arr = virtualRows.map(function (row) { return extend({}, row); });\n var rows = freezeRowGenerator.generateRows(data, notifyArgs, arr);\n if (parent.frozenRows && notifyArgs.requestType === 'delete' && parent.pageSettings.currentPage === 1) {\n rows = rows.slice(parent.frozenRows);\n }\n return rows;\n}\n/**\n * @param {NotifyArgs} args -specifies the args\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {IGrid} parent - specifies the IGrid\n * @param {FreezeRowModelGenerator} freezeRowGenerator - specifies the freezeRowGenerator\n * @param {Object[]} firstPageRecords - specifies the first page records\n * @returns {Row[]} returns the row\n * @hidden\n */\nexport function getReorderedFrozenRows(args, virtualRenderer, parent, freezeRowGenerator, firstPageRecords) {\n var bIndex = args.virtualInfo.blockIndexes;\n var colIndex = args.virtualInfo.columnIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n args.virtualInfo.page = 1;\n if (!args.renderMovableContent) {\n args.virtualInfo.columnIndexes = [];\n }\n var firstRecordslength = parent.getCurrentViewRecords().length;\n firstPageRecords = parent.renderModule.data.dataManager.dataSource.json.slice(0, firstRecordslength);\n var virtualRows = virtualRenderer.vgenerator.generateRows(firstPageRecords, args);\n var rows = splitReorderedRows(virtualRows, parent, args, freezeRowGenerator);\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.columnIndexes = colIndex;\n args.virtualInfo.page = page;\n return rows.splice(0, parent.frozenRows);\n}\n/**\n * @param {Row[]} rows - specifies the row\n * @param {IGrid} parent - specifies the IGrid\n * @param {NotifyArgs} args - specifies the notify arguments\n * @param {FreezeRowModelGenerator} freezeRowGenerator - specifies the freezerowgenerator\n * @returns {Row[]} returns the row\n * @hidden\n */\nexport function splitReorderedRows(\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nrows, parent, args, freezeRowGenerator) {\n var tableName;\n if (args.renderMovableContent) {\n tableName = 'movable';\n }\n else if (args.renderFrozenRightContent) {\n tableName = 'frozen-right';\n }\n else {\n tableName = 'frozen-left';\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)].cells = splitFrozenRowObjectCells(parent, rows[parseInt(i.toString(), 10)].cells, tableName);\n }\n return rows;\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the VirtualRenderer\n * @returns {boolean} returns the isXaxis\n * @hidden\n */\nexport function isXaxis(virtualRenderer) {\n var value = false;\n if (virtualRenderer) {\n value = virtualRenderer.requestType === 'virtualscroll'\n && virtualRenderer.currentInfo.sentinelInfo.axis === 'X';\n }\n return value;\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtualrenderer\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Element[]} returns the element\n * @hidden\n */\nexport function getHeaderCells(virtualRenderer, parent) {\n var content = isXaxis(virtualRenderer) ? parent.getMovableVirtualHeader() : parent.getHeaderContent();\n return content ? [].slice.call(content.querySelectorAll('.e-headercell:not(.e-stackedheadercell)')) : [];\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual Renderer\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Element} returns the element\n * @hidden\n */\nexport function getVirtualFreezeHeader(virtualRenderer, parent) {\n var headerTable;\n if (isXaxis(virtualRenderer)) {\n headerTable = parent.getMovableVirtualHeader().querySelector('.' + literals.table + ':not(.e-masked-table)');\n }\n else {\n headerTable = parent.getFrozenVirtualHeader().querySelector('.' + literals.table);\n }\n return headerTable;\n}\n/**\n * @param {Column[]} columns - specifies the columns\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Column[]} returns the column[]\n * @hidden\n */\nexport function ensureFrozenCols(columns, parent) {\n var frozenCols = parent.columns.slice(0, parent.getFrozenColumns());\n columns = frozenCols.concat(columns);\n return columns;\n}\n/**\n * @param {Element} colGroup - specifies the colGroup\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {ColumnVirtualFreezeRenderer} instance - specifies the instances\n * @returns {Element} returns the element\n * @hidden\n */\nexport function setColGroup(colGroup, virtualRenderer, instance) {\n if (!isXaxis(virtualRenderer)) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n instance.colgroup = colGroup;\n }\n return instance.colgroup;\n}\n/**\n * @param {VirtualFreezeRenderer} instance - specifies the instance\n * @param {number} index - specifies the index\n * @returns {void}\n * @hidden\n */\nexport function setCache(instance, index) {\n if (instance.virtualRenderer.vgenerator.cache[1]) {\n instance.virtualRenderer.vgenerator.cache[1][parseInt(index.toString(), 10)] = instance.frzRows[parseInt(index.toString(), 10)];\n }\n else {\n instance.virtualRenderer.vgenerator.cache[1] = instance.frzRows;\n }\n if (instance.virtualRenderer.vgenerator.movableCache[1]) {\n instance.virtualRenderer.vgenerator.movableCache[1][parseInt(index.toString(), 10)] =\n instance.mvblRows[parseInt(index.toString(), 10)];\n }\n else {\n instance.virtualRenderer.vgenerator.movableCache[1] = instance.mvblRows;\n }\n}\n/**\n * @param {IGrid} parent - specifies the IGrid\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtualRenderer\n * @param {Element} scrollbar - specifies the scrollbr\n * @param {Element} mCont - specifies the mCont\n * @returns {void}\n * @hidden\n */\nexport function setDebounce(parent, virtualRenderer, scrollbar, mCont) {\n var debounceEvent = (parent.dataSource instanceof DataManager && !parent.dataSource.dataSource.offline);\n var opt = {\n container: virtualRenderer.content, pageHeight: virtualRenderer.getBlockHeight() * 2, debounceEvent: debounceEvent,\n axes: parent.enableColumnVirtualization ? ['X', 'Y'] : ['Y'], scrollbar: scrollbar,\n movableContainer: mCont\n };\n virtualRenderer.observer = new InterSectionObserver(virtualRenderer.virtualEle.wrapper, opt, virtualRenderer.virtualEle.movableWrapper);\n}\n/**\n * ColumnVirtualFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar ColumnVirtualFreezeRenderer = /** @class */ (function (_super) {\n __extends(ColumnVirtualFreezeRenderer, _super);\n function ColumnVirtualFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n /** @hidden */\n _this.frRows = [];\n /** @hidden */\n _this.frzRows = [];\n /** @hidden */\n _this.mvblRows = [];\n _this.serviceLoc = locator;\n _this.eventListener('on');\n _this.rowModelGenerator = new RowModelGenerator(_this.parent);\n return _this;\n }\n ColumnVirtualFreezeRenderer.prototype.actionComplete = function (args) {\n if (args.requestType === 'delete' && this.parent.frozenRows) {\n for (var i = 0; i < this.parent.frozenRows; i++) {\n if (this.virtualRenderer.vgenerator.frozenRightCache[1]) {\n this.virtualRenderer.vgenerator.frozenRightCache[1][parseInt(i.toString(), 10)] = this.frRows.length ?\n this.frRows[parseInt(i.toString(), 10)] : this.frzRows[parseInt(i.toString(), 10)];\n }\n else {\n this.virtualRenderer.vgenerator.frozenRightCache[1] = this.frRows.length ? this.frRows : this.frzRows;\n break;\n }\n setCache(this, i);\n }\n }\n };\n ColumnVirtualFreezeRenderer.prototype.eventListener = function (action) {\n this.parent.addEventListener(events.actionComplete, this.actionComplete.bind(this));\n this.parent[\"\" + action](events.refreshVirtualFrozenRows, this.refreshVirtualFrozenRows, this);\n this.parent[\"\" + action](events.getVirtualData, this.getVirtualData, this);\n this.parent[\"\" + action](events.setFreezeSelection, this.setFreezeSelection, this);\n };\n ColumnVirtualFreezeRenderer.prototype.refreshVirtualFrozenRows = function (args) {\n var _this = this;\n if (args.requestType === 'delete' && this.parent.frozenRows) {\n args.isFrozenRowsRender = true;\n var query = this.parent.renderModule.data.generateQuery(true).clone();\n query.page(1, this.parent.pageSettings.pageSize);\n var selectedIdx_1 = this.parent.getSelectedRowIndexes();\n this.parent.renderModule.data.getData({}, query).then(function (e) {\n renderFrozenRows(args, e.result, selectedIdx_1, _this.parent, _this.rowModelGenerator, _this.serviceLoc, _this.virtualRenderer, _this);\n });\n }\n };\n ColumnVirtualFreezeRenderer.prototype.setFreezeSelection = function (args) {\n setFreezeSelectionAction(args, this.virtualRenderer);\n };\n ColumnVirtualFreezeRenderer.prototype.getVirtualData = function (data) {\n this.virtualRenderer.getVirtualData(data);\n };\n ColumnVirtualFreezeRenderer.prototype.renderNextFrozentPart = function (e, tableName) {\n e.renderMovableContent = this.parent.getFrozenLeftCount() ? tableName === literals.frozenLeft : tableName === literals.frozenRight;\n e.renderFrozenRightContent = this.parent.getFrozenMode() === literals.leftRight && tableName === 'movable';\n if (e.renderMovableContent || e.renderFrozenRightContent) {\n this.refreshContentRows(extend({}, e));\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.renderTable = function () {\n this.virtualRenderer = new VirtualContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n _super.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var frozenRightCont = this.getFrozenRightContent();\n var frzCont = this.getFrozenContent();\n var movableCont = this.getMovableContent();\n if (this.parent.getFrozenMode() === 'Right') {\n frzCont = frozenRightCont;\n }\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n this.renderVirtualFrozenLeft(frzCont, movableCont);\n this.renderVirtualFrozenRight(frzCont, movableCont);\n this.renderVirtualFrozenLeftRight(frzCont, movableCont, frozenRightCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n ColumnVirtualFreezeRenderer.prototype.renderVirtualFrozenLeft = function (frzCont, movableCont) {\n if (this.parent.getFrozenMode() === 'Left') {\n this.virtualRenderer.virtualEle.wrapper.appendChild(frzCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n }\n };\n ColumnVirtualFreezeRenderer.prototype.renderVirtualFrozenRight = function (frzCont, movableCont) {\n if (this.parent.getFrozenMode() === 'Right') {\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(frzCont);\n }\n };\n ColumnVirtualFreezeRenderer.prototype.renderVirtualFrozenLeftRight = function (frzCont, movableCont, frozenRightCont) {\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.virtualRenderer.virtualEle.wrapper.appendChild(frzCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(frozenRightCont);\n }\n };\n /**\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newchild\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n appendContent(this.virtualRenderer, this.widthService, target, newChild, e);\n this.refreshScrollOffset();\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.generateRows = function (data, e) {\n if (!this.firstPageRecords) {\n this.firstPageRecords = data;\n }\n return generateRows(this.virtualRenderer, data, e, this.freezeRowGenerator, this.parent);\n };\n /**\n * @param {number} index - specifies the number\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getRowByIndex = function (index) {\n return this.virtualRenderer.getRowByIndex(index);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} - returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getFrozenRightRowByIndex = function (index) {\n return this.virtualRenderer.getFrozenRightVirtualRowByIndex(index);\n };\n ColumnVirtualFreezeRenderer.prototype.collectRows = function (tableName) {\n return collectRows(tableName, this.virtualRenderer, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getMovableRowByIndex = function (index) {\n return this.virtualRenderer.getMovableVirtualRowByIndex(index);\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getFrozenRightRows = function () {\n return this.collectRows('frozen-right');\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getMovableRows = function () {\n return this.collectRows('movable');\n };\n /**\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getColGroup = function () {\n var mCol = this.parent.getMovableVirtualContent();\n return isXaxis(this.virtualRenderer) ? mCol.querySelector(literals.colGroup) : this.colgroup;\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getRows = function () {\n return this.collectRows(this.parent.getFrozenMode() === 'Right' ? 'frozen-right' : 'frozen-left');\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {Row[]} returns the row object\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getReorderedFrozenRows = function (args) {\n return getReorderedFrozenRows(args, this.virtualRenderer, this.parent, this.freezeRowGenerator, this.firstPageRecords);\n };\n ColumnVirtualFreezeRenderer.prototype.getHeaderCells = function () {\n return getHeaderCells(this.virtualRenderer, this.parent);\n };\n ColumnVirtualFreezeRenderer.prototype.isXaxis = function () {\n return isXaxis(this.virtualRenderer);\n };\n ColumnVirtualFreezeRenderer.prototype.getVirtualFreezeHeader = function () {\n return getVirtualFreezeHeader(this.virtualRenderer, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {object} - returns the object\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getRowObjectByIndex = function (index) {\n return this.virtualRenderer.getRowObjectByIndex(index);\n };\n ColumnVirtualFreezeRenderer.prototype.ensureFrozenCols = function (columns) {\n return ensureFrozenCols(columns, this.parent);\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} - returns the element\n */\n ColumnVirtualFreezeRenderer.prototype.setColGroup = function (colGroup) {\n return setColGroup(colGroup, this.virtualRenderer, this);\n };\n return ColumnVirtualFreezeRenderer;\n}(ColumnFreezeContentRenderer));\nexport { ColumnVirtualFreezeRenderer };\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.isFrozenGrid());\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell');\n if (e.target === firstHeaderCell && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell');\n firstHeaderCell.tabIndex = 0;\n if (this.parent.isFrozenGrid() && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else {\n this.setActive(false);\n }\n if (!isNullOrUndefined(this.active)) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.' + literals.frozenContent)) ||\n !isNullOrUndefined(closest(e.target, '.' + literals.frozenHeader));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n if (this.parent.isFrozenGrid() && isHeader && e.target === this.parent.getHeaderContent().firstChild\n && this.active.matrix.current[0] === -1 && this.active.matrix.current[1] === this.active.matrix.columns) {\n this.active.matrix.current = [0, 0];\n }\n this.focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n var isFrozenGrid = this.parent.isFrozenGrid();\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent') && !isFrozenGrid) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (isFrozenGrid && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevActiveName = this.getActiveName();\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(isFrozenGrid && this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = isFrozenGrid && this.parent.editSettings.mode === 'Batch' && e.target && (e.action === 'tab'\n || e.action === 'shiftTab') && (parentsUntil(e.target, 'e-gridheader')\n || parentsUntil(e.target, 'e-gridcontent')) ? undefined\n : this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (!isFrozenGrid) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString()) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString() && !swapInfo.swap\n && !(this.parent.editSettings.mode === 'Batch' && !(this.getActiveName() === prevActiveName))) {\n this.focusOutFromHeader(e);\n return;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (!isFrozenGrid) {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()\n && this.getActiveName() === prevActiveName) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (tr.classList.contains('e-insertedrow') || !tr.classList.contains('e-row')\n || (!cellCol.isPrimaryKey && cellCol.allowEditing))) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setFrozenBatchEditCell = function (currentActiveName, currentCellIndex, next, nextRow) {\n var gObj = this.parent;\n var nextCell;\n var nextSection = false;\n if (nextRow !== undefined) {\n nextCell = [nextRow, next ? 0 : this.active.matrix.matrix[parseInt(nextRow.toString(), 10)].length - 1];\n }\n else {\n nextCell = next ? [currentCellIndex[0], currentCellIndex[1] + 1] : [currentCellIndex[0], currentCellIndex[1] - 1];\n }\n if (this.active.matrix.matrix[nextCell[0]] && this.active.matrix.matrix[nextCell[0]][nextCell[1]]) {\n if (this.isValidBatchEditCell(nextCell)) {\n this.active.matrix.current = nextCell;\n }\n else {\n var prevNextCell = nextCell;\n nextCell = this.findBatchEditCell(nextCell, next, true);\n if (prevNextCell.toString() === nextCell.toString()) {\n nextSection = true;\n }\n else {\n this.active.matrix.current = nextCell;\n }\n }\n }\n else {\n nextSection = true;\n }\n if (nextSection) {\n var activeName = this.getActiveName();\n var frozenMode = gObj.getFrozenMode();\n var rowIndex = nextCell[0];\n var rowDec = rowIndex - 1;\n var rowInc = rowIndex + 1;\n var notPrev = !next && rowDec === -1;\n var notNext = next && rowInc > this.active.matrix.matrix.length - 1;\n var returnCurrentActiveName = ((activeName === 'FrozenLeftHeader' || (activeName === 'Movableheader'\n && frozenMode === 'Right')) && notPrev) || ((activeName === 'FrozenRightContent' || (activeName === 'MovableContent'\n && frozenMode === 'Left')) && notNext);\n if (returnCurrentActiveName) {\n this.setActiveByName(currentActiveName);\n this.active.matrix.current = currentCellIndex;\n }\n else {\n var frozenLeftRightPrev = frozenMode === 'Left-Right' && !next;\n var frozenLeftRightNext = frozenMode === 'Left-Right' && next;\n var frozenLeftNotNext = frozenMode === 'Left' && notNext;\n var frozenLeftNext = frozenMode === 'Left' && next;\n var frozenRightPrev = frozenMode === 'Right' && !next;\n var frozenRightNotPrev = frozenMode === 'Right' && notPrev;\n var content = (activeName === 'Movableheader' && frozenLeftNotNext) || (activeName === 'FrozenRightHeader'\n && notNext) || (activeName === 'FrozenLeftContent' && !notPrev) || (activeName === 'MovableContent'\n && !frozenRightNotPrev) || activeName === 'FrozenRightContent';\n var frozenContent = ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && !frozenLeftRightNext) || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent')\n && frozenLeftRightNext);\n var frozenRightContent = ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent')\n && frozenLeftRightPrev) || ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && frozenLeftRightNext);\n this.setActive(content, frozenContent, frozenRightContent);\n var nextIndex = (activeName === 'Movableheader' && frozenLeftNotNext)\n || (activeName === 'FrozenRightHeader' && notNext) ? 0\n : ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenLeftNext)\n || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent') && next) ? rowInc\n : (activeName === 'FrozenLeftContent' && notPrev)\n || (activeName === 'MovableContent' && frozenRightNotPrev) ? this.active.matrix.matrix.length - 1\n : ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent') && !next)\n || ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenRightPrev) ? rowDec\n : rowIndex;\n this.setFrozenBatchEditCell(currentActiveName, currentCellIndex, next, nextIndex);\n }\n }\n };\n FocusStrategy.prototype.getActiveName = function () {\n var activeName;\n if (this.active) {\n var activeTable = this.active.getTable();\n activeName = parentsUntil(activeTable, 'e-frozen-left-header') ? 'FrozenLeftHeader' :\n parentsUntil(activeTable, 'e-movableheader') ? 'Movableheader' :\n parentsUntil(activeTable, 'e-frozen-right-header') ? 'FrozenRightHeader' :\n parentsUntil(activeTable, 'e-frozen-left-content') ? 'FrozenLeftContent' :\n parentsUntil(activeTable, 'e-movablecontent') ? 'MovableContent' :\n parentsUntil(activeTable, 'e-frozen-right-content') ? 'FrozenRightContent' :\n undefined;\n }\n return activeName;\n };\n FocusStrategy.prototype.setActiveByName = function (activeName) {\n var frozenMode = this.parent.getFrozenMode();\n switch (activeName) {\n case 'FrozenLeftHeader':\n this.setActive(false, true);\n break;\n case 'Movableheader':\n this.setActive(false);\n break;\n case 'FrozenRightHeader':\n this.setActive(false, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n case 'FrozenLeftContent':\n this.setActive(true, true);\n break;\n case 'MovableContent':\n this.setActive(true);\n break;\n case 'FrozenRightContent':\n this.setActive(true, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n }\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || (filterCell && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content, isFrozen, isFrozenRight) {\n this.active = content ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && !isNullOrUndefined(e);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content ? e.rows.slice(0, _this.parent.frozenRows) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject().slice(_this.parent.frozenRows);\n var newMovableRows = mRows.map(function (row) { return row.clone(); });\n var newFrozenRows = rows.map(function (row) { return row.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === literals.leftRight) {\n var frRows = _this.parent.getFrozenRightRowsObject().slice(_this.parent.frozenRows);\n var newfrRows = frRows.map(function (row) { return row.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n if (!(_this.parent.isFrozenGrid() && ((e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n var _this = this;\n if (!this.parent.isFrozenGrid() && this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: _this.parent.isFrozenGrid() }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader, swap.toFrozen);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[parseInt(rowIndex.toString(), 10)]) ?\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab' && this.parent.getFrozenMode() === 'Left'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || action === 'tab')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n if (!this.parent.isFrozenGrid() && action === 'tab' &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n frozenSwap = this.parent.isFrozenGrid();\n }\n if (!this.parent.isFrozenGrid() && action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = this.matrix.matrix[current[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current[0] = previous[0] + 1;\n current[1] = -1;\n }\n }\n else if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Left') {\n current[0] = previous[0] - 1;\n current[1] = this.matrix.matrix[current[0]].length;\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && (current[1] === 0\n || current[1] === this.matrix.matrix[current[0]].indexOf(1))) || (this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)))\n || (current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap && !(this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[0] === this.matrix.matrix.length - 1) || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n if (action === 'tab' && this.parent.getFrozenMode() === 'Left' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n if (this.parent.getFrozenMode() === 'Left' && action === 'shiftTab') {\n current1[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current1[0] = previous[0] + 1;\n current1[1] = -1;\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n var headerTable = this.getHeaderType() === 'FixedHeaderFocus' && this.parent.getFrozenMode() !== 'Right' ? literals.frozenLeft :\n this.getHeaderType() === 'FixedHeaderFocus' || this.getHeaderType() === 'FixedRightHeaderFocus' ? literals.frozenRight : 'movable';\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && cells[parseInt(i.toString(), 10)].column.freezeTable === headerTable)) {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex, headerTable) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && columns[parseInt(i.toString(), 10)].freezeTable === headerTable)) {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\nvar FixedContentFocus = /** @class */ (function (_super) {\n __extends(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() !== 'Right'\n && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var fSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var frSwap = action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n return { swap: swap, toHeader: toHeader, toFrozen: fSwap };\n }\n if (action === 'shiftTab' && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1)),\n toHeader: toHeader,\n toFrozen: fSwap,\n toFrozenRight: frSwap\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = this.matrix.matrix[previous[0]].length;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current2[0] = previous[0] + 1;\n current2[1] = -1;\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nexport { FixedContentFocus };\nvar FixedHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap_1 = ((action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1)))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap_1);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frSwap_1, toFrozen: toFrozen };\n }\n var frSwap = current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) && isPresent)\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1,\n toFrozenRight: frSwap\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current3[0] = previous[0] + 1;\n current3[1] = -1;\n }\n return current3;\n };\n FixedHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedHeaderFocus';\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\nexport { FixedHeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', 'Clear');\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\nvar FixedRightContentFocus = /** @class */ (function (_super) {\n __extends(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var toFrozenSwap = this.parent.getFrozenMode() === literals.leftRight && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)),\n toHeader: toHeader,\n toFrozenRight: toHeader,\n toFrozen: toFrozenSwap\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nexport { FixedRightContentFocus };\nvar FixedRightHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var fSwap = action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n var frSwap = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frozenSwap, toFrozen: fSwap, toFrozenRight: frSwap };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n return current3;\n };\n FixedRightHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedRightHeaderFocus';\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\nexport { FixedRightHeaderFocus };\n","import { RowModelGenerator } from '../services/row-model-generator';\nimport { splitFrozenRowObjectCells } from '../base/util';\n/**\n * FreezeRowModelGenerator is used to generate grid data rows with freeze row and column.\n *\n * @hidden\n */\nvar FreezeRowModelGenerator = /** @class */ (function () {\n function FreezeRowModelGenerator(parent) {\n this.parent = parent;\n this.rowModelGenerator = new RowModelGenerator(this.parent);\n }\n FreezeRowModelGenerator.prototype.generateRows = function (data, notifyArgs, virtualRows) {\n var tableName;\n if (notifyArgs.renderFrozenRightContent || (notifyArgs.renderMovableContent && !this.parent.enableVirtualization)) {\n tableName = 'frozen-right';\n }\n else if (notifyArgs.renderMovableContent || notifyArgs.isFrozen) {\n tableName = 'movable';\n }\n else {\n tableName = this.parent.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n }\n if (notifyArgs.requestType === 'virtualscroll' && notifyArgs.virtualInfo.sentinelInfo.axis === 'X') {\n if (tableName !== 'movable') {\n return null;\n }\n }\n var row = this.parent.enableVirtualization && !notifyArgs.isFrozenRowsRender ? virtualRows\n : this.rowModelGenerator.generateRows(data, notifyArgs);\n for (var i = 0, len = row.length; i < len; i++) {\n row[parseInt(i.toString(), 10)].cells =\n splitFrozenRowObjectCells(this.parent, row[parseInt(i.toString(), 10)].cells, tableName);\n }\n return row;\n };\n return FreezeRowModelGenerator;\n}());\nexport { FreezeRowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent\n && rowObj[parseInt(i.toString(), 10)].data.key === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { EventHandler, Browser } from '@syncfusion/ej2-base';\nimport { debounce } from '@syncfusion/ej2-base';\n/**\n * InterSectionObserver - class watch whether it enters the viewport.\n *\n * @hidden\n */\nvar InterSectionObserver = /** @class */ (function () {\n function InterSectionObserver(element, options, movableEle) {\n var _this = this;\n this.fromWheel = false;\n this.touchMove = false;\n this.options = {};\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerRect.top;\n info.entered = top >= 0;\n return top + (_this.options.pageHeight / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var bottom = rect.bottom;\n info.entered = rect.bottom <= _this.containerRect.bottom;\n return ((bottom - _this.containerRect.top) - (_this.options.pageHeight / 2)) <= _this.options.pageHeight / 2;\n }, axis: 'Y'\n },\n 'right': {\n check: function (rect, info) {\n var right = rect.right;\n if (_this.movableEle) {\n info.entered = right < _this.movableContainerRect.right;\n return right - _this.movableContainerRect.width <= _this.movableContainerRect.right;\n }\n info.entered = right < _this.containerRect.right;\n return right - _this.containerRect.width <= _this.containerRect.right;\n }, axis: 'X'\n },\n 'left': {\n check: function (rect, info) {\n var left = rect.left;\n info.entered = left > 0;\n if (_this.movableEle) {\n return left + _this.movableContainerRect.width >= _this.movableContainerRect.left;\n }\n return left + _this.containerRect.width >= _this.containerRect.left;\n }, axis: 'X'\n }\n };\n this.element = element;\n this.options = options;\n this.movableEle = movableEle;\n }\n InterSectionObserver.prototype.observe = function (callback, onEnterCallback) {\n var _this = this;\n this.containerRect = this.options.container.getBoundingClientRect();\n EventHandler.add(this.options.container, 'wheel', function () { return _this.fromWheel = true; }, this);\n EventHandler.add(this.options.container, 'scroll', this.virtualScrollHandler(callback, onEnterCallback), this);\n if (this.options.movableContainer) {\n this.movableContainerRect = this.options.movableContainer.getBoundingClientRect();\n EventHandler.add(this.options.scrollbar, 'wheel', function () { return _this.fromWheel = true; }, this);\n EventHandler.add(this.options.scrollbar, 'scroll', this.virtualScrollHandler(callback, onEnterCallback), this);\n }\n };\n InterSectionObserver.prototype.check = function (direction) {\n var info = this.sentinelInfo[\"\" + direction];\n if (this.movableContainerRect && (direction === 'left' || direction === 'right')) {\n return info.check(this.movableEle.getBoundingClientRect(), info);\n }\n return info.check(this.element.getBoundingClientRect(), info);\n };\n InterSectionObserver.prototype.virtualScrollHandler = function (callback, onEnterCallback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n this.options.prevTop = this.options.prevLeft = 0;\n return function (e) {\n var top = _this.options.movableContainer ? _this.options.container.scrollTop : e.target.scrollTop;\n var left = _this.options.movableContainer ? _this.options.scrollbar.scrollLeft : e.target.scrollLeft;\n var direction = _this.options.prevTop < top ? 'down' : 'up';\n direction = _this.options.prevLeft === left ? direction : _this.options.prevLeft < left ? 'right' : 'left';\n _this.options.prevTop = top;\n _this.options.prevLeft = left;\n var current = _this.sentinelInfo[\"\" + direction];\n if (_this.options.axes.indexOf(current.axis) === -1) {\n return;\n }\n var check = _this.check(direction);\n if (current.entered) {\n if (_this.movableEle && (direction === 'right' || direction === 'left')) {\n onEnterCallback(_this.movableEle, current, direction, { top: top, left: left }, _this.fromWheel, check);\n }\n else {\n onEnterCallback(_this.element, current, direction, { top: top, left: left }, _this.fromWheel, check);\n }\n }\n if (check) {\n var fn = debounced100;\n //this.fromWheel ? this.options.debounceEvent ? debounced100 : callback : debounced100;\n if (current.axis === 'X') {\n fn = debounced50;\n }\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n _this.fromWheel = false;\n };\n };\n InterSectionObserver.prototype.setPageHeight = function (value) {\n this.options.pageHeight = value;\n };\n return InterSectionObserver;\n}());\nexport { InterSectionObserver };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? args.startIndex : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start, end) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end && !start ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = !start ? this.parent.getIndentCount() : 0;\n if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start, end);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isGroupAdaptive } from '../base/util';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n */\nvar VirtualRowModelGenerator = /** @class */ (function () {\n function VirtualRowModelGenerator(parent) {\n this.cOffsets = {};\n this.cache = {};\n this.movableCache = {};\n this.frozenRightCache = {};\n this.rowCache = {};\n this.data = {};\n this.groups = {};\n this.currentInfo = {};\n this.parent = parent;\n this.model = this.parent.pageSettings;\n this.rowModelGenerator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n }\n VirtualRowModelGenerator.prototype.generateRows = function (data, e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isManualRefresh = false;\n var info = e.virtualInfo = e.virtualInfo || this.getData();\n var xAxis = info.sentinelInfo && info.sentinelInfo.axis === 'X';\n var page = !xAxis && info.loadNext && !info.loadSelf ? info.nextInfo.page : info.page;\n var result = [];\n var indexes = this.getBlockIndexes(page);\n var loadedBlocks = [];\n if (this.currentInfo.blockIndexes) {\n indexes = info.blockIndexes = e.virtualInfo.blockIndexes = this.includePrevPage ? this.currentInfo.blockIndexes.slice(1)\n : this.currentInfo.blockIndexes.slice(0, this.currentInfo.blockIndexes.length - 1);\n isManualRefresh = true;\n }\n if ((isFrozen && (this.parent.getFrozenMode() !== literals.leftRight && !e.renderMovableContent)\n || this.parent.getFrozenMode() === literals.leftRight && !e.renderMovableContent && !e.renderFrozenRightContent) || !isFrozen) {\n this.checkAndResetCache(e.requestType);\n }\n if (isGroupAdaptive(this.parent) && this.parent.vcRows.length) {\n var dataRows = this.parent.vcRows.filter(function (row) { return row.isDataRow; });\n if ((this.parent.isManualRefresh && dataRows.length === data['records'].length) || !this.parent.isManualRefresh) {\n return result = this.parent.vcRows;\n }\n }\n if (this.parent.enableColumnVirtualization) {\n for (var i = 0; i < info.blockIndexes.length; i++) {\n if (this.isBlockAvailable(info.blockIndexes[parseInt(i.toString(), 10)])) {\n this.cache[info.blockIndexes[parseInt(i.toString(), 10)]] =\n this.rowModelGenerator.refreshRows(this.cache[info.blockIndexes[parseInt(i.toString(), 10)]]);\n }\n if ((e.renderMovableContent && this.isMovableBlockAvailable(info.blockIndexes[parseInt(i.toString(), 10)]))\n || (e.renderFrozenRightContent && this.isFrozenRightBlockAvailable(info.blockIndexes[parseInt(i.toString(), 10)]))) {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n cache[info.blockIndexes[parseInt(i.toString(), 10)]] =\n this.rowModelGenerator.refreshRows(cache[info.blockIndexes[parseInt(i.toString(), 10)]]);\n }\n }\n }\n var values = info.blockIndexes;\n for (var i = 0; i < values.length; i++) {\n if (!this.isBlockAvailable(values[parseInt(i.toString(), 10)])) {\n var startIdx = !isNullOrUndefined(this.startIndex) ? this.startIndex :\n this.getStartIndex(values[parseInt(i.toString(), 10)], data);\n var rows = this.rowModelGenerator.generateRows(data, {\n virtualInfo: info, startIndex: startIdx\n });\n if (isGroupAdaptive(this.parent) && !this.parent.vcRows.length) {\n this.parent.vRows = rows;\n this.parent.vcRows = rows;\n this.parent.notify(events.refreshVirtualMaxPage, {});\n }\n var median = void 0;\n if (isGroupAdaptive(this.parent)) {\n this.getGroupVirtualRecordsByIndex(rows);\n }\n else {\n if (isManualRefresh) {\n this.setBlockForManualRefresh(this.cache, indexes, rows);\n }\n else {\n median = ~~Math.max(rows.length, this.model.pageSize) / 2;\n if (!this.isBlockAvailable(indexes[0])) {\n this.cache[indexes[0]] = rows.slice(0, median);\n }\n if (!this.isBlockAvailable(indexes[1])) {\n this.cache[indexes[1]] = rows.slice(median);\n }\n }\n }\n }\n if (this.parent.groupSettings.columns.length && !xAxis && this.cache[values[parseInt(i.toString(), 10)]] &&\n !this.parent.groupSettings.enableLazyLoading) {\n this.cache[values[parseInt(i.toString(), 10)]] =\n this.updateGroupRow(this.cache[values[parseInt(i.toString(), 10)]], values[parseInt(i.toString(), 10)]);\n }\n if ((e.renderMovableContent && !this.isMovableBlockAvailable(values[parseInt(i.toString(), 10)]))\n || (e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(values[parseInt(i.toString(), 10)]))) {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n var startIdx = !isNullOrUndefined(this.startIndex) ? this.startIndex :\n this.getStartIndex(values[parseInt(i.toString(), 10)], data);\n var rows = this.rowModelGenerator.generateRows(data, {\n virtualInfo: info, startIndex: startIdx\n });\n if (isManualRefresh) {\n this.setBlockForManualRefresh(cache, indexes, rows);\n }\n else {\n var median = ~~Math.max(rows.length, this.model.pageSize) / 2;\n if ((e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(indexes[0]))\n || (e.renderMovableContent && !this.isMovableBlockAvailable(indexes[0]))) {\n cache[indexes[0]] = rows.slice(0, median);\n }\n if ((e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(indexes[1]))\n || (e.renderMovableContent && !this.isMovableBlockAvailable(indexes[1]))) {\n cache[indexes[1]] = rows.slice(median);\n }\n }\n }\n if (!e.renderMovableContent && !e.renderFrozenRightContent && this.cache[values[parseInt(i.toString(), 10)]]) {\n result.push.apply(result, this.cache[values[parseInt(i.toString(), 10)]]);\n }\n else {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n if (cache[values[parseInt(i.toString(), 10)]]) {\n result.push.apply(result, cache[values[parseInt(i.toString(), 10)]]);\n }\n }\n if (this.isBlockAvailable(values[parseInt(i.toString(), 10)])) {\n loadedBlocks.push(values[parseInt(i.toString(), 10)]);\n }\n }\n info.blockIndexes = loadedBlocks;\n var grouping = 'records';\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n this.parent.currentViewData[\"\" + grouping] = result.map(function (m) { return m.data; });\n }\n else if (isFrozen) {\n if ((e.renderMovableContent && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenColumns())) || e.renderFrozenRightContent) {\n this.parent.currentViewData = result.map(function (m) { return m.data; });\n }\n }\n else {\n this.parent.currentViewData = result.map(function (m) { return m.data; });\n }\n if (isGroupAdaptive(this.parent) && this.parent.vcRows.length) {\n if (['save', 'delete'].some(function (value) { return e.requestType === value; })) {\n return result = this.parent.vcRows;\n }\n }\n return result;\n };\n VirtualRowModelGenerator.prototype.setBlockForManualRefresh = function (cache, blocks, rows) {\n var size = this.model.pageSize / 2;\n if (this.includePrevPage) {\n cache[blocks[0] - 1] = rows.slice(0, size);\n cache[blocks[0]] = rows.slice(size, size * 2);\n cache[blocks[1]] = rows.slice(size * 2, size * 3);\n cache[blocks[2]] = rows.slice(size * 3, size * 4);\n }\n else {\n cache[blocks[0]] = rows.slice(0, size);\n cache[blocks[1]] = rows.slice(size, size * 2);\n cache[blocks[2]] = rows.slice(size * 2, size * 3);\n cache[blocks[2] + 1] = rows.slice(size * 3, size * 4);\n }\n };\n VirtualRowModelGenerator.prototype.getBlockIndexes = function (page) {\n return [page + (page - 1), page * 2];\n };\n VirtualRowModelGenerator.prototype.getPage = function (block) {\n return block % 2 === 0 ? block / 2 : (block + 1) / 2;\n };\n VirtualRowModelGenerator.prototype.isBlockAvailable = function (value) {\n return value in this.cache;\n };\n VirtualRowModelGenerator.prototype.isMovableBlockAvailable = function (value) {\n return value in this.movableCache;\n };\n VirtualRowModelGenerator.prototype.isFrozenRightBlockAvailable = function (value) {\n return value in this.frozenRightCache;\n };\n VirtualRowModelGenerator.prototype.getData = function () {\n return {\n page: this.model.currentPage,\n blockIndexes: this.getBlockIndexes(this.model.currentPage),\n direction: 'down',\n columnIndexes: this.parent.getColumnIndexesInView()\n };\n };\n VirtualRowModelGenerator.prototype.getStartIndex = function (blk, data, full) {\n if (full === void 0) { full = true; }\n var page = this.getPage(blk);\n var even = blk % 2 === 0;\n var index = (page - 1) * this.model.pageSize;\n return full || !even ? index : index + ~~(this.model.pageSize / 2);\n };\n VirtualRowModelGenerator.prototype.getColumnIndexes = function (content) {\n var _this = this;\n if (content === void 0) { content = this.parent.getHeaderContent().querySelector('.' + literals.headerContent); }\n if (this.parent.isFrozenGrid()) {\n content = content.querySelector('.' + literals.movableHeader);\n }\n var indexes = [];\n var sLeft = content.scrollLeft | 0;\n var keys = Object.keys(this.cOffsets);\n var cWidth = content.getBoundingClientRect().width;\n sLeft = Math.min(this.cOffsets[keys.length - 1] - cWidth, sLeft);\n var calWidth = Browser.isDevice ? 2 * cWidth : cWidth / 2;\n var left = sLeft + cWidth + (sLeft === 0 ? calWidth : 0);\n keys.some(function (offset) {\n var iOffset = Number(offset);\n var offsetVal = _this.cOffsets[\"\" + offset];\n var border = sLeft - calWidth <= offsetVal && left + calWidth >= offsetVal;\n if (border) {\n indexes.push(iOffset);\n }\n return left + calWidth < offsetVal;\n });\n this.addFrozenIndex(indexes);\n return indexes;\n };\n VirtualRowModelGenerator.prototype.addFrozenIndex = function (indexes) {\n if (this.parent.getFrozenColumns() && this.parent.enableColumnVirtualization && indexes[0] === 0) {\n for (var i = 0; i < this.parent.getFrozenColumns(); i++) {\n indexes.push(indexes[indexes.length - 1] + 1);\n }\n }\n };\n VirtualRowModelGenerator.prototype.checkAndResetCache = function (action) {\n var actions = ['paging', 'refresh', 'sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder',\n 'save', 'delete'];\n if (this.parent.getFrozenColumns() && this.parent.frozenRows && this.parent.enableColumnVirtualization && action === 'reorder') {\n actions.splice(actions.indexOf(action), 1);\n }\n var clear = actions.some(function (value) { return action === value; });\n if (clear) {\n this.cache = {};\n this.data = {};\n this.groups = {};\n this.movableCache = {};\n this.frozenRightCache = {};\n }\n return clear;\n };\n VirtualRowModelGenerator.prototype.refreshColOffsets = function () {\n var _this = this;\n var col = 0;\n this.cOffsets = {};\n var gLen = this.parent.groupSettings.columns.length;\n var cols = this.parent.columns;\n var cLen = cols.length;\n var isVisible = function (column) { return column.visible &&\n (!_this.parent.groupSettings.showGroupedColumn ? _this.parent.groupSettings.columns.indexOf(column.field) < 0 : column.visible); };\n var c = this.parent.groupSettings.columns;\n for (var i = 0; i < c.length; i++) {\n this.cOffsets[parseInt(i.toString(), 10)] = (this.cOffsets[i - 1] | 0) + 30;\n }\n // eslint-disable-next-line prefer-spread\n var blocks = Array.apply(null, Array(cLen)).map(function () { return col++; });\n for (var j = 0; j < blocks.length; j++) {\n blocks[parseInt(j.toString(), 10)] = blocks[parseInt(j.toString(), 10)] + gLen;\n this.cOffsets[blocks[parseInt(j.toString(), 10)]] =\n (this.cOffsets[blocks[parseInt(j.toString(), 10)] - 1] | 0) + (isVisible(cols[parseInt(j.toString(), 10)]) ?\n parseInt(cols[parseInt(j.toString(), 10)].width, 10) : 0);\n }\n };\n VirtualRowModelGenerator.prototype.updateGroupRow = function (current, block) {\n var currentFirst = current[0];\n var rows = [];\n var keys = Object.keys(this.cache);\n for (var i = 0; i < keys.length; i++) {\n if (Number(keys[parseInt(i.toString(), 10)]) < block) {\n rows = rows.concat(this.cache[keys[parseInt(i.toString(), 10)]]);\n }\n }\n if ((currentFirst && currentFirst.isDataRow) || block % 2 === 0) {\n return current;\n }\n return this.iterateGroup(current, rows);\n };\n VirtualRowModelGenerator.prototype.iterateGroup = function (current, rows) {\n var currentFirst = current[0];\n var offset = 0;\n if (currentFirst && currentFirst.isDataRow) {\n return current;\n }\n var isPresent = current.some(function (row) {\n return rows.some(function (oRow, index) {\n var res = oRow && oRow.data.field !== undefined\n && oRow.data.field === row.data.field &&\n oRow.data.key === row.data.key;\n if (res) {\n offset = index;\n }\n return res;\n });\n });\n if (isPresent) {\n current.shift();\n current = this.iterateGroup(current, rows.slice(offset));\n }\n return current;\n };\n VirtualRowModelGenerator.prototype.getRows = function () {\n var rows = [];\n var keys = Object.keys(this.cache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.cache[keys[parseInt(i.toString(), 10)]]);\n }\n return rows;\n };\n VirtualRowModelGenerator.prototype.generateCells = function (foreignKeyData) {\n var cells = [];\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n cells.push(this.rowModelGenerator.generateCell(cols[parseInt(i.toString(), 10)], null, null, null, null, foreignKeyData));\n }\n return cells;\n };\n VirtualRowModelGenerator.prototype.getGroupVirtualRecordsByIndex = function (rows) {\n var blocks = this.parent.contentModule.getGroupedTotalBlocks();\n var blockSize = this.parent.contentModule.getBlockSize();\n for (var i = 1; i <= blocks; i++) {\n var count = 0;\n this.cache[parseInt(i.toString(), 10)] = [];\n for (var j = ((i - 1) * blockSize); j < rows.length; j++) {\n if (count === blockSize) {\n break;\n }\n this.cache[parseInt(i.toString(), 10)].push(rows[parseInt(j.toString(), 10)]);\n if (rows[parseInt(j.toString(), 10)].isDataRow) {\n count++;\n }\n }\n }\n };\n return VirtualRowModelGenerator;\n}());\nexport { VirtualRowModelGenerator };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols) {\n if (!mHdr || !mHdr.querySelector(literals.colGroup)) {\n return;\n }\n headerCol = mHdr\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup = mHdr.querySelector(literals.colGroup);\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup);\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (contentCol && !clear) {\n if (contentCol.style.width !== headerCol.style.width && this.parent.isFrozenGrid() && this.parent['reorderModule'] &&\n this.parent['reorderModule'].element && this.parent['reorderModule'].destElement) {\n contentCol.style.display = this.parent.getColumnByIndex(index).visible ? '' : 'none';\n }\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector(literals.colGroup)) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup = [].slice.call(ele.querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup[colGroup.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup[0];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Left') {\n headerCol = colGroup[isDrag ? (index + 1) : index];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Right') {\n headerCol = colGroup[index - (left + movable)];\n }\n else {\n headerCol = colGroup[index - left];\n }\n return headerCol;\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === literals.frozenLeft || column.getFreezeTableName() === literals.frozenRight)) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n var movableHeader = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto && !this.parent.resizeModule.resizeProcess) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (movableHeader.firstElementChild) {\n if (movableHeader.firstElementChild.classList.contains('e-masked-table')) {\n movableHeader.childNodes[1].style.width = movableWidth;\n }\n else {\n movableHeader.firstElementChild.style.width = movableWidth;\n }\n }\n if (movableContent.firstElementChild.classList.contains('e-masked-table')) {\n movableContent.childNodes[1].style.width = movableWidth;\n }\n else {\n movableContent.firstElementChild.style.width = movableWidth;\n }\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': this.pagerModule.getLocalizedLabel('ExternalMsg') } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n *\n * @returns {void}s\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n remove(this.element);\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { createElement, classList, append } from '@syncfusion/ej2-base';\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @class */ (function () {\n /**\n * Constructor for numericContainer module\n *\n * @param {Pager} pagerModule - specifies the pagerModule\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n *\n * @returns {void}\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.refreshAriaAttrLabel();\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { role: 'link', tabindex: '-1', 'aria-label': pagerObj.getLocalizedLabel('Page') + i + pagerObj.getLocalizedLabel('Of') +\n pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'), href: '#', name: 'Goto page' + i }\n });\n link.setAttribute('onclick', 'event.preventDefault()');\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n link.setAttribute('aria-selected', 'true');\n link.setAttribute('aria-current', 'page');\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.refreshAriaAttrLabel = function () {\n var pagerObj = this.pagerModule;\n var numericContainer = pagerObj.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (links[parseInt(i.toString(), 10)].hasAttribute('aria-label') && links[parseInt(i.toString(), 10)].hasAttribute('index')) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-label', pagerObj.getLocalizedLabel('Page') + links[parseInt(i.toString(), 10)].getAttribute('index')\n + pagerObj.getLocalizedLabel('Of') + pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'));\n }\n }\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPagerTooltip'), role: 'link',\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n name: this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n href: '#'\n }\n });\n this.PP.setAttribute('onclick', 'event.preventDefault()');\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPagerTooltip'), role: 'link',\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n name: this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n href: '#'\n }\n });\n this.NP.setAttribute('onclick', 'event.preventDefault()');\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n var target = e.target;\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!target.classList.contains('e-disable') && !isNullOrUndefined(target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var pageNo;\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n if (pageNo <= pagerObj.totalPages) {\n this.links[parseInt(i.toString(), 10)].style.display = '';\n this.links[parseInt(i.toString(), 10)].setAttribute('index', pageNo.toString());\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[parseInt(i.toString(), 10)].classList.add('e-pager-default');\n }\n else {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[parseInt(i.toString(), 10)].style.display = 'none';\n }\n classList(this.links[parseInt(i.toString(), 10)], [], ['e-currentitem', 'e-active']);\n this.links[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n this.links[parseInt(i.toString(), 10)].removeAttribute('aria-current');\n this.links[parseInt(i.toString(), 10)].setAttribute('role', 'link');\n }\n this.first.setAttribute('index', '1');\n this.last.setAttribute('index', pagerObj.totalPages.toString());\n this.prev.setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.next.setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.pagerElement.querySelector('.e-mfirst').setAttribute('index', '1');\n this.pagerElement.querySelector('.e-mlast').setAttribute('index', pagerObj.totalPages.toString());\n this.pagerElement.querySelector('.e-mprev').setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.pagerElement.querySelector('.e-mnext').setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.PP.setAttribute('index', (parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount).toString());\n this.NP.setAttribute('index', (parseInt(this.links[this.links.length - 1].getAttribute('index'), 10) + 1).toString());\n };\n NumericContainer.prototype.updateStyles = function () {\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n classList(this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount], ['e-currentitem', 'e-active'], []);\n this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount].setAttribute('aria-selected', 'true');\n this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount].setAttribute('aria-current', 'page');\n this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount].removeAttribute('role');\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\nexport { NumericContainer };\n","import { createElement, remove } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n *\n * @returns {void}\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '-1' } });\n this.pagerCons = createElement('span', {\n className: 'e-constant', innerHTML: this.pagerModule.getLocalizedLabel('pagerDropDown')\n });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n placeholder: this.pagerModule.getLocalizedLabel('pagerDropDown'),\n cssClass: this.pagerModule.cssClass ? 'e-alldrop' + ' ' + this.pagerModule.cssClass : 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n *\n * @param {ChangeEventArgs} e - specifies the changeeventargs\n * @returns {void}\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.pagerModule.isAllPage = true;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n this.pagerModule.isAllPage = false;\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n this.pagerModule.trigger('dropDownChanged', { pageSize: this.pagerModule.isAllPage ? this.pagerModule.totalRecordsCount :\n parseInt(this.dropDownListObject.value, 10) });\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.isPageSizeAll(this.pagerModule.pageSize)) {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n }\n else {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerDropDown');\n }\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[parseInt(i.toString(), 10)] = parseInt(item[parseInt(i.toString(), 10)], 10) ?\n item[parseInt(i.toString(), 10)].toString() : (this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) : item[parseInt(i.toString(), 10)];\n }\n return item;\n };\n PagerDropDown.prototype.isPageSizeAll = function (value) {\n var pageSizeNum = typeof (value) === 'string' && value !== this.pagerModule.getLocalizedLabel('All') ?\n parseInt(value, 10) : value;\n if (pageSizeNum === this.pagerModule.totalRecordsCount || value === this.pagerModule.getLocalizedLabel('All')) {\n return true;\n }\n else {\n return false;\n }\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n this.pagerModule.isAllPage = this.isPageSizeAll(value);\n this.dropDownListObject[\"\" + prop] = this.pagerModule.isAllPage ? this.pagerModule.getLocalizedLabel('All') : value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, append } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar', attrs: { 'aria-label': this.pagerModule.getLocalizedLabel('Information') } });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n this.pageNoMsgElem.parentElement.setAttribute('aria-label', this.pageNoMsgElem.textContent + this.pageCountMsgElem.textContent);\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[parseInt(i.toString(), 10)].toString());\n }\n return str;\n };\n return PagerMessage;\n}());\nexport { PagerMessage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, L10n, Browser, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, Event, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { NumericContainer } from './numeric-container';\nimport { PagerMessage } from './pager-message';\nimport { appendChildren } from '../grid/base/util';\nimport * as events from '../grid/base/constant';\n/**\n * Represents the `Pager` component.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n /**\n * Constructor for creating the component.\n *\n * @param {PagerModel} options - specifies the options\n * @param {string} element - specifies the element\n * @param {string} parent - specifies the pager parent\n * @hidden\n */\n function Pager(options, element, parent) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n _this.pageRefresh = 'pager-refresh';\n _this.firstPagerFocus = false;\n _this.parent = parent;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} returns the modules declaration\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this]\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager items',\n previousPagerTooltip: 'Go to previous pager items',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager items',\n PreviousPagerTooltip: 'Go to previous pager items',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All',\n Container: 'Pager Container',\n Information: 'Pager Information',\n ExternalMsg: 'Pager external message',\n Page: 'Page ',\n Of: ' of ',\n Pages: ' Pages'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n *\n * @returns {void}\n */\n Pager.prototype.render = function () {\n this.element.setAttribute('data-role', 'pager');\n this.element.setAttribute('tabindex', '-1');\n this.initLocalization();\n this.element.setAttribute('aria-label', this.getLocalizedLabel('Container'));\n if (this.cssClass) {\n addClass([this.element], [this.cssClass]);\n }\n if (!this.hasParent) {\n this.element.setAttribute('tabindex', '0');\n }\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on(this.pageRefresh, this.pagerTemplate, this);\n this.notify(this.pageRefresh, {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n this.wireEvents();\n this.addListener();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n *\n * @method destroy\n * @returns {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.isReactTemplate()) {\n this.off(this.pageRefresh, this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\n this.removeListener();\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - Defines the index\n */\n // eslint-disable-next-line\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PagerModel} newProp - specifies the new property\n * @param {PagerModel} oldProp - specifies the old propety\n * @returns {void}\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if ((newProp.pageSize === this.getLocalizedLabel('All')) && oldProp.pageSize === this.totalRecordsCount) {\n this.pageSize = this.totalRecordsCount;\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n };\n Pager.prototype.wireEvents = function () {\n if (!this.hasParent) {\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n };\n Pager.prototype.unwireEvents = function () {\n if (!this.hasParent) {\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n };\n Pager.prototype.onFocusIn = function (e) {\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n if (isNullOrUndefined(focusedTabIndexElement)) {\n var target = e.target;\n var dropDownPage = this.getDropDownPage();\n if (!this.hasParent) {\n this.element.tabIndex = -1;\n }\n if (target === this.element && !this.hasParent) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n this.addFocus(focusablePagerElements[0], true);\n return;\n }\n if (target === this.element) {\n this.element.tabIndex = 0;\n return;\n }\n if (target !== dropDownPage && !target.classList.contains('e-disable')) {\n this.addFocus(target, true);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.onFocusOut = function (e) {\n var focusedElement = this.getFocusedElement();\n var dropDownPage = this.getDropDownPage();\n if (!isNullOrUndefined(focusedElement)) {\n this.removeFocus(focusedElement, true);\n }\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n this.removeFocus(dropDownPage, true);\n }\n this.setTabIndexForFocusLastElement();\n if (!this.hasParent) {\n this.element.tabIndex = 0;\n }\n if (this.hasParent) {\n this.element.tabIndex = -1;\n }\n };\n Pager.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n }\n }\n };\n Pager.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.notify(events.keyPressed, presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Pager.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.on(events.keyPressed, this.onKeyPress, this);\n }\n };\n Pager.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.off(events.keyPressed, this.onKeyPress);\n }\n };\n Pager.prototype.onKeyPress = function (e) {\n if (!this.hasParent) {\n if (this.checkPagerHasFocus()) {\n this.changePagerFocus(e);\n }\n else {\n e.preventDefault();\n this.setPagerFocus();\n }\n }\n };\n /**\n * @returns {boolean} - Return the true value if pager has focus\n * @hidden */\n Pager.prototype.checkPagerHasFocus = function () {\n return this.getFocusedTabindexElement() ? true : false;\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerContainerFocus = function () {\n this.element.focus();\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerFocus = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n };\n Pager.prototype.setPagerFocusForActiveElement = function () {\n var currentActivePage = this.getActiveElement();\n if (currentActivePage) {\n currentActivePage.focus();\n }\n };\n Pager.prototype.setTabIndexForFocusLastElement = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && !isNullOrUndefined(dropDownPage.offsetParent)) {\n dropDownPage.tabIndex = 0;\n }\n else if (focusablePagerElements.length > 0) {\n focusablePagerElements[focusablePagerElements.length - 1].tabIndex = 0;\n }\n };\n /**\n * @param {KeyboardEventArgs} e - Keyboard Event Args\n * @returns {void}\n * @hidden */\n Pager.prototype.changePagerFocus = function (e) {\n if (e.shiftKey && e.keyCode === 9) {\n this.changeFocusByShiftTab(e);\n }\n else if (e.keyCode === 9) {\n this.changeFocusByTab(e);\n }\n else if (e.keyCode === 13 || e.keyCode === 32) {\n this.navigateToPageByEnterOrSpace(e);\n }\n else if (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 35 || e.keyCode === 36) {\n this.navigateToPageByKey(e);\n }\n };\n Pager.prototype.getFocusedTabindexElement = function () {\n var focusedTabIndexElement;\n var tabindexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n for (var i = 0; i < tabindexElements.length; i++) {\n var element = tabindexElements[parseInt(i.toString(), 10)];\n if (element && (element.classList.contains('e-focused') || element.classList.contains('e-input-focus'))) {\n focusedTabIndexElement = element;\n break;\n }\n }\n return focusedTabIndexElement;\n };\n Pager.prototype.changeFocusByTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (focusablePagerElements.length > 0) {\n if (this.pageSizes && dropDownPage && currentItemPagerFocus === focusablePagerElements[focusablePagerElements.length - 1]) {\n dropDownPage.tabIndex = 0;\n }\n else {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var incrementNumber = i + 1;\n if (incrementNumber < focusablePagerElements.length) {\n e.preventDefault();\n focusablePagerElements[parseInt(incrementNumber.toString(), 10)].focus();\n }\n break;\n }\n }\n }\n }\n };\n Pager.prototype.changeFocusByShiftTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n dropDownPage.tabIndex = -1;\n this.addFocus(focusablePagerElements[focusablePagerElements.length - 1], true);\n }\n else if (focusablePagerElements.length > 0) {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var decrementNumber = i - 1;\n if (decrementNumber >= 0) {\n e.preventDefault();\n focusablePagerElements[parseInt(decrementNumber.toString(), 10)].focus();\n }\n else if (this.hasParent) {\n var rows = this.parent.getRows();\n var lastRow = rows[rows.length - 1];\n var lastCell = lastRow.lastChild;\n e.preventDefault();\n lastCell.focus();\n this.firstPagerFocus = true;\n }\n break;\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.checkFirstPagerFocus = function () {\n if (this.firstPagerFocus) {\n this.firstPagerFocus = false;\n return true;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.navigateToPageByEnterOrSpace = function (e) {\n var currentItemPagerFocus = this.getFocusedElement();\n if (currentItemPagerFocus) {\n this.goToPage(parseInt(currentItemPagerFocus.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n var selectedClass = this.getClass(currentItemPagerFocus);\n var classElement = this.getElementByClass(selectedClass);\n if ((selectedClass === 'e-first' || selectedClass === 'e-prev' || selectedClass === 'e-next'\n || selectedClass === 'e-last' || selectedClass === 'e-pp' || selectedClass === 'e-np')\n && classElement && !classElement.classList.contains('e-disable')) {\n classElement.focus();\n }\n else if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.navigateToPageByKey = function (e) {\n var actionClass = e.keyCode === 37 ? '.e-prev' : e.keyCode === 39 ? '.e-next'\n : e.keyCode === 35 ? '.e-last' : e.keyCode === 36 ? '.e-first' : '';\n var pagingItem = this.element.querySelector(actionClass);\n var currentItemPagerFocus = this.getFocusedElement();\n if (!isNullOrUndefined(pagingItem) && pagingItem.hasAttribute('index')\n && !isNaN(parseInt(pagingItem.getAttribute('index'), 10))) {\n this.goToPage(parseInt(pagingItem.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.checkFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n return selectedClass === 'e-mfirst' || selectedClass === 'e-mprev' || selectedClass === 'e-mnext'\n || selectedClass === 'e-mlast' ? true : false;\n };\n Pager.prototype.changeFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n var classElement = this.getElementByClass(selectedClass);\n if (classElement && classElement.classList.contains('e-disable')) {\n if (selectedClass === 'e-mnext' || selectedClass === 'e-mlast') {\n var mPrev = this.element.querySelector('.e-mprev');\n mPrev.focus();\n }\n else {\n this.setPagerFocus();\n }\n }\n };\n Pager.prototype.removeTabindexLastElements = function () {\n var tabIndexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n if (tabIndexElements.length > 1) {\n for (var i = 1; i < tabIndexElements.length; i++) {\n var element = tabIndexElements[parseInt(i.toString(), 10)];\n if (element) {\n element.tabIndex = -1;\n }\n }\n }\n };\n Pager.prototype.getActiveElement = function () {\n return this.element.querySelector('.e-active');\n };\n /**\n * @returns {Element} - Returns DropDown Page\n * @hidden */\n Pager.prototype.getDropDownPage = function () {\n var dropDownPageHolder = this.element.querySelector('.e-pagerdropdown');\n var dropDownPage;\n if (dropDownPageHolder) {\n dropDownPage = dropDownPageHolder.children[0];\n }\n return dropDownPage;\n };\n Pager.prototype.getFocusedElement = function () {\n return this.element.querySelector('.e-focused');\n };\n Pager.prototype.getClass = function (element) {\n var currentClass;\n var classList = ['e-mfirst', 'e-mprev', 'e-first', 'e-prev', 'e-pp',\n 'e-np', 'e-next', 'e-last', 'e-mnext', 'e-mlast'];\n for (var i = 0; i < classList.length; i++) {\n if (element && element.classList.contains(classList[parseInt(i.toString(), 10)])) {\n currentClass = classList[parseInt(i.toString(), 10)];\n return currentClass;\n }\n }\n return currentClass;\n };\n Pager.prototype.getElementByClass = function (className) {\n return this.element.querySelector('.' + className);\n };\n /**\n * @param {Element} element - Pager element\n * @param {Element[]} previousElements - Iterating pager element\n * @returns {Element[]} - Returns focusable pager element\n * @hidden */\n Pager.prototype.getFocusablePagerElements = function (element, previousElements) {\n var target = element;\n var targetChildrens = target.children;\n var pagerElements = previousElements;\n for (var i = 0; i < targetChildrens.length; i++) {\n var element_1 = targetChildrens[parseInt(i.toString(), 10)];\n if (element_1.children.length > 0 && !element_1.classList.contains('e-pagesizes')) {\n pagerElements = this.getFocusablePagerElements(element_1, pagerElements);\n }\n else {\n var tabindexElement = targetChildrens[parseInt(i.toString(), 10)];\n if (tabindexElement.hasAttribute('tabindex') && !element_1.classList.contains('e-disable')\n && element_1.style.display !== 'none'\n && !isNullOrUndefined(element_1.offsetParent)) {\n pagerElements.push(tabindexElement);\n }\n }\n }\n return pagerElements;\n };\n Pager.prototype.addFocus = function (element, addFocusClass) {\n if (addFocusClass) {\n addClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = 0;\n };\n Pager.prototype.removeFocus = function (element, removeFocusClass) {\n if (removeFocusClass) {\n removeClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = -1;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - specifies the key\n * @returns {string} returns the localized label\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n *\n * @param {number} pageNo - Defines page number.\n * @returns {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @param {number} pageSize - specifies the pagesize\n * @returns {void}\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.refresh();\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate() && !this.isVue) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = this.isVue ? this.getPagerTemplate()(data, this, 'template') : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = this.isAllPage ? 1 : (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string} template - specifies the template\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.compile = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n this.templateFn = templateCompiler(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n this.containerModule.refresh();\n this.removeTabindexLastElements();\n if (focusedTabIndexElement && focusedTabIndexElement.classList.contains('e-disable')) {\n if (this.checkFocusInAdaptiveMode(focusedTabIndexElement)) {\n this.changeFocusInAdaptiveMode(focusedTabIndexElement);\n }\n else {\n this.setPagerFocusForActiveElement();\n }\n }\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n this.setTabIndexForFocusLastElement();\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regx = new RegExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: this.getLocalizedLabel('firstPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[parseInt(i.toString(), 10)]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return (this.isReact || this.isVue) && this.template && typeof (this.template) !== 'string';\n };\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"cssClass\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\nexport { Pager };\n","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) {\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","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.1';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' 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=MjEuMQ==\";\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","/**\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 { 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 (!this.element.classList.contains(\"e-dialog\") && !this.element.classList.contains(\"e-card\") && document.scrollingElement) {\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","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n FLOATTEXTCONTENT: 'e-float-text-content',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n var isBindClearAction = true;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n isBindClearAction = args.bindClearAction;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton && args.element.tagName !== 'TEXTAREA') {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons) && args.element.tagName !== 'TEXTAREA') {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n createSpanElement(inputObject.container, makeElement);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n if (inputValue !== '' && !isNullOrUndefined(inputValue) && inputElement.parentElement) {\n inputElement.parentElement.classList.add('e-valid-input');\n }\n else if (floatLabelType !== 'Always' && inputElement.parentElement) {\n inputElement.parentElement.classList.remove('e-valid-input');\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement, args.element);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('blur', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button, readonly) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n function updateLabelState(value, label, element) {\n if (element === void 0) { element = null; }\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n if (!isNullOrUndefined(container) &&\n container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([container], CLASSNAMES.INPUTGROUP);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n button.addEventListener('click', function (event) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button, element.readOnly);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('blur', function (event) {\n setTimeout(function () {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function destroy() {\n privateInputObj = null;\n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 attributes(this.hiddenInput, { 'name': this.inputName });\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\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) {\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.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, 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 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.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","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) {\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","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.1';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' 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=MjEuMQ==\";\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","/**\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 { 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 (!this.element.classList.contains(\"e-dialog\") && !this.element.classList.contains(\"e-card\") && document.scrollingElement) {\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) ? 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","/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole == 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n // eslint-disable-next-line\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n // eslint-disable-next-line\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n // eslint-disable-next-line\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() != 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = text;\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","var 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) {\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","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.1';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' 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=MjEuMQ==\";\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","/**\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 { 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 (!this.element.classList.contains(\"e-dialog\") && !this.element.classList.contains(\"e-card\") && document.scrollingElement) {\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) ? 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 { 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 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]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'mousewheel DOMMouseScroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n this.closeMenu(null, e);\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n _this.keyType = '';\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && e.target.classList.contains('e-vscroll'))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n wrapper.classList.toggle(RTL);\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'mousewheel DOMMouseScroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (ishide) {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.add(HIDE);\n }\n else {\n ul.children[index].classList.add(HIDE);\n }\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.remove(HIDE);\n }\n else {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","var 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) {\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","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.1';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' 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=MjEuMQ==\";\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","/**\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 { 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 (!this.element.classList.contains(\"e-dialog\") && !this.element.classList.contains(\"e-card\") && document.scrollingElement) {\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","/**\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 * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && element.classList.contains('e-date-range-wrapper')) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","/**\n * 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.X) ? this.position.X : oldProp.position.X;\n var positionY = isNullOrUndefined(oldProp.position.Y) ? this.position.Y : oldProp.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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 _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","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","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"katex\"] = factory();\n\telse\n\t\troot[\"katex\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \t// The require scope\n/******/ \tvar __webpack_require__ = {};\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ katex_webpack; }\n});\n\n;// CONCATENATED MODULE: ./src/ParseError.js\n\n\n/**\n * This is the ParseError class, which is the main error thrown by KaTeX\n * functions when something has gone wrong. This is used to distinguish internal\n * errors from errors in the expression that the user provided.\n *\n * If possible, a caller should provide a Token or ParseNode with information\n * about where in the source string the problem occurred.\n */\nclass ParseError {\n // Error start position based on passed-in Token or ParseNode.\n // Length of affected text based on passed-in Token or ParseNode.\n // The underlying error message without any context added.\n constructor(message, // The error message\n token // An object providing position information\n ) {\n this.name = void 0;\n this.position = void 0;\n this.length = void 0;\n this.rawMessage = void 0;\n let error = \"KaTeX parse error: \" + message;\n let start;\n let end;\n const loc = token && token.loc;\n\n if (loc && loc.start <= loc.end) {\n // If we have the input and a position, make the error a bit fancier\n // Get the input\n const input = loc.lexer.input; // Prepend some information\n\n start = loc.start;\n end = loc.end;\n\n if (start === input.length) {\n error += \" at end of input: \";\n } else {\n error += \" at position \" + (start + 1) + \": \";\n } // Underline token in question using combining underscores\n\n\n const underlined = input.slice(start, end).replace(/[^]/g, \"$&\\u0332\"); // Extract some context from the input and add it to the error\n\n let left;\n\n if (start > 15) {\n left = \"…\" + input.slice(start - 15, start);\n } else {\n left = input.slice(0, start);\n }\n\n let right;\n\n if (end + 15 < input.length) {\n right = input.slice(end, end + 15) + \"…\";\n } else {\n right = input.slice(end);\n }\n\n error += left + underlined + right;\n } // Some hackery to make ParseError a prototype of Error\n // See http://stackoverflow.com/a/8460753\n // $FlowFixMe\n\n\n const self = new Error(error);\n self.name = \"ParseError\"; // $FlowFixMe\n\n self.__proto__ = ParseError.prototype;\n self.position = start;\n\n if (start != null && end != null) {\n self.length = end - start;\n }\n\n self.rawMessage = message;\n return self;\n }\n\n} // $FlowFixMe More hackery\n\n\nParseError.prototype.__proto__ = Error.prototype;\n/* harmony default export */ var src_ParseError = (ParseError);\n;// CONCATENATED MODULE: ./src/utils.js\n/**\n * This file contains a list of utility functions which are useful in other\n * files.\n */\n\n/**\n * Return whether an element is contained in a list\n */\nconst contains = function (list, elem) {\n return list.indexOf(elem) !== -1;\n};\n/**\n * Provide a default value if a setting is undefined\n * NOTE: Couldn't use `T` as the output type due to facebook/flow#5022.\n */\n\n\nconst deflt = function (setting, defaultIfUndefined) {\n return setting === undefined ? defaultIfUndefined : setting;\n}; // hyphenate and escape adapted from Facebook's React under Apache 2 license\n\n\nconst uppercase = /([A-Z])/g;\n\nconst hyphenate = function (str) {\n return str.replace(uppercase, \"-$1\").toLowerCase();\n};\n\nconst ESCAPE_LOOKUP = {\n \"&\": \"&\",\n \">\": \">\",\n \"<\": \"<\",\n \"\\\"\": \""\",\n \"'\": \"'\"\n};\nconst ESCAPE_REGEX = /[&><\"']/g;\n/**\n * Escapes text to prevent scripting attacks.\n */\n\nfunction utils_escape(text) {\n return String(text).replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]);\n}\n/**\n * Sometimes we want to pull out the innermost element of a group. In most\n * cases, this will just be the group itself, but when ordgroups and colors have\n * a single element, we want to pull that out.\n */\n\n\nconst getBaseElem = function (group) {\n if (group.type === \"ordgroup\") {\n if (group.body.length === 1) {\n return getBaseElem(group.body[0]);\n } else {\n return group;\n }\n } else if (group.type === \"color\") {\n if (group.body.length === 1) {\n return getBaseElem(group.body[0]);\n } else {\n return group;\n }\n } else if (group.type === \"font\") {\n return getBaseElem(group.body);\n } else {\n return group;\n }\n};\n/**\n * TeXbook algorithms often reference \"character boxes\", which are simply groups\n * with a single character in them. To decide if something is a character box,\n * we find its innermost group, and see if it is a single character.\n */\n\n\nconst isCharacterBox = function (group) {\n const baseElem = getBaseElem(group); // These are all they types of groups which hold single characters\n\n return baseElem.type === \"mathord\" || baseElem.type === \"textord\" || baseElem.type === \"atom\";\n};\n\nconst assert = function (value) {\n if (!value) {\n throw new Error('Expected non-null, but got ' + String(value));\n }\n\n return value;\n};\n/**\n * Return the protocol of a URL, or \"_relative\" if the URL does not specify a\n * protocol (and thus is relative), or `null` if URL has invalid protocol\n * (so should be outright rejected).\n */\n\nconst protocolFromUrl = function (url) {\n // Check for possible leading protocol.\n // https://url.spec.whatwg.org/#url-parsing strips leading whitespace\n // (U+20) or C0 control (U+00-U+1F) characters.\n // eslint-disable-next-line no-control-regex\n const protocol = /^[\\x00-\\x20]*([^\\\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(url);\n\n if (!protocol) {\n return \"_relative\";\n } // Reject weird colons\n\n\n if (protocol[2] !== \":\") {\n return null;\n } // Reject invalid characters in scheme according to\n // https://datatracker.ietf.org/doc/html/rfc3986#section-3.1\n\n\n if (!/^[a-zA-Z][a-zA-Z0-9+\\-.]*$/.test(protocol[1])) {\n return null;\n } // Lowercase the protocol\n\n\n return protocol[1].toLowerCase();\n};\n/* harmony default export */ var utils = ({\n contains,\n deflt,\n escape: utils_escape,\n hyphenate,\n getBaseElem,\n isCharacterBox,\n protocolFromUrl\n});\n;// CONCATENATED MODULE: ./src/Settings.js\n/* eslint no-console:0 */\n\n/**\n * This is a module for storing settings passed into KaTeX. It correctly handles\n * default settings.\n */\n\n\n\n// TODO: automatically generate documentation\n// TODO: check all properties on Settings exist\n// TODO: check the type of a property on Settings matches\nconst SETTINGS_SCHEMA = {\n displayMode: {\n type: \"boolean\",\n description: \"Render math in display mode, which puts the math in \" + \"display style (so \\\\int and \\\\sum are large, for example), and \" + \"centers the math on the page on its own line.\",\n cli: \"-d, --display-mode\"\n },\n output: {\n type: {\n enum: [\"htmlAndMathml\", \"html\", \"mathml\"]\n },\n description: \"Determines the markup language of the output.\",\n cli: \"-F, --format \"\n },\n leqno: {\n type: \"boolean\",\n description: \"Render display math in leqno style (left-justified tags).\"\n },\n fleqn: {\n type: \"boolean\",\n description: \"Render display math flush left.\"\n },\n throwOnError: {\n type: \"boolean\",\n default: true,\n cli: \"-t, --no-throw-on-error\",\n cliDescription: \"Render errors (in the color given by --error-color) ins\" + \"tead of throwing a ParseError exception when encountering an error.\"\n },\n errorColor: {\n type: \"string\",\n default: \"#cc0000\",\n cli: \"-c, --error-color \",\n cliDescription: \"A color string given in the format 'rgb' or 'rrggbb' \" + \"(no #). This option determines the color of errors rendered by the \" + \"-t option.\",\n cliProcessor: color => \"#\" + color\n },\n macros: {\n type: \"object\",\n cli: \"-m, --macro \",\n cliDescription: \"Define custom macro of the form '\\\\foo:expansion' (use \" + \"multiple -m arguments for multiple macros).\",\n cliDefault: [],\n cliProcessor: (def, defs) => {\n defs.push(def);\n return defs;\n }\n },\n minRuleThickness: {\n type: \"number\",\n description: \"Specifies a minimum thickness, in ems, for fraction lines,\" + \" `\\\\sqrt` top lines, `{array}` vertical lines, `\\\\hline`, \" + \"`\\\\hdashline`, `\\\\underline`, `\\\\overline`, and the borders of \" + \"`\\\\fbox`, `\\\\boxed`, and `\\\\fcolorbox`.\",\n processor: t => Math.max(0, t),\n cli: \"--min-rule-thickness \",\n cliProcessor: parseFloat\n },\n colorIsTextColor: {\n type: \"boolean\",\n description: \"Makes \\\\color behave like LaTeX's 2-argument \\\\textcolor, \" + \"instead of LaTeX's one-argument \\\\color mode change.\",\n cli: \"-b, --color-is-text-color\"\n },\n strict: {\n type: [{\n enum: [\"warn\", \"ignore\", \"error\"]\n }, \"boolean\", \"function\"],\n description: \"Turn on strict / LaTeX faithfulness mode, which throws an \" + \"error if the input uses features that are not supported by LaTeX.\",\n cli: \"-S, --strict\",\n cliDefault: false\n },\n trust: {\n type: [\"boolean\", \"function\"],\n description: \"Trust the input, enabling all HTML features such as \\\\url.\",\n cli: \"-T, --trust\"\n },\n maxSize: {\n type: \"number\",\n default: Infinity,\n description: \"If non-zero, all user-specified sizes, e.g. in \" + \"\\\\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, \" + \"elements and spaces can be arbitrarily large\",\n processor: s => Math.max(0, s),\n cli: \"-s, --max-size \",\n cliProcessor: parseInt\n },\n maxExpand: {\n type: \"number\",\n default: 1000,\n description: \"Limit the number of macro expansions to the specified \" + \"number, to prevent e.g. infinite macro loops. If set to Infinity, \" + \"the macro expander will try to fully expand as in LaTeX.\",\n processor: n => Math.max(0, n),\n cli: \"-e, --max-expand \",\n cliProcessor: n => n === \"Infinity\" ? Infinity : parseInt(n)\n },\n globalGroup: {\n type: \"boolean\",\n cli: false\n }\n};\n\nfunction getDefaultValue(schema) {\n if (schema.default) {\n return schema.default;\n }\n\n const type = schema.type;\n const defaultType = Array.isArray(type) ? type[0] : type;\n\n if (typeof defaultType !== 'string') {\n return defaultType.enum[0];\n }\n\n switch (defaultType) {\n case 'boolean':\n return false;\n\n case 'string':\n return '';\n\n case 'number':\n return 0;\n\n case 'object':\n return {};\n }\n}\n/**\n * The main Settings object\n *\n * The current options stored are:\n * - displayMode: Whether the expression should be typeset as inline math\n * (false, the default), meaning that the math starts in\n * \\textstyle and is placed in an inline-block); or as display\n * math (true), meaning that the math starts in \\displaystyle\n * and is placed in a block with vertical margin.\n */\n\n\nclass Settings {\n constructor(options) {\n this.displayMode = void 0;\n this.output = void 0;\n this.leqno = void 0;\n this.fleqn = void 0;\n this.throwOnError = void 0;\n this.errorColor = void 0;\n this.macros = void 0;\n this.minRuleThickness = void 0;\n this.colorIsTextColor = void 0;\n this.strict = void 0;\n this.trust = void 0;\n this.maxSize = void 0;\n this.maxExpand = void 0;\n this.globalGroup = void 0;\n // allow null options\n options = options || {};\n\n for (const prop in SETTINGS_SCHEMA) {\n if (SETTINGS_SCHEMA.hasOwnProperty(prop)) {\n // $FlowFixMe\n const schema = SETTINGS_SCHEMA[prop]; // TODO: validate options\n // $FlowFixMe\n\n this[prop] = options[prop] !== undefined ? schema.processor ? schema.processor(options[prop]) : options[prop] : getDefaultValue(schema);\n }\n }\n }\n /**\n * Report nonstrict (non-LaTeX-compatible) input.\n * Can safely not be called if `this.strict` is false in JavaScript.\n */\n\n\n reportNonstrict(errorCode, errorMsg, token) {\n let strict = this.strict;\n\n if (typeof strict === \"function\") {\n // Allow return value of strict function to be boolean or string\n // (or null/undefined, meaning no further processing).\n strict = strict(errorCode, errorMsg, token);\n }\n\n if (!strict || strict === \"ignore\") {\n return;\n } else if (strict === true || strict === \"error\") {\n throw new src_ParseError(\"LaTeX-incompatible input and strict mode is set to 'error': \" + (errorMsg + \" [\" + errorCode + \"]\"), token);\n } else if (strict === \"warn\") {\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to 'warn': \" + (errorMsg + \" [\" + errorCode + \"]\"));\n } else {\n // won't happen in type-safe code\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to \" + (\"unrecognized '\" + strict + \"': \" + errorMsg + \" [\" + errorCode + \"]\"));\n }\n }\n /**\n * Check whether to apply strict (LaTeX-adhering) behavior for unusual\n * input (like `\\\\`). Unlike `nonstrict`, will not throw an error;\n * instead, \"error\" translates to a return value of `true`, while \"ignore\"\n * translates to a return value of `false`. May still print a warning:\n * \"warn\" prints a warning and returns `false`.\n * This is for the second category of `errorCode`s listed in the README.\n */\n\n\n useStrictBehavior(errorCode, errorMsg, token) {\n let strict = this.strict;\n\n if (typeof strict === \"function\") {\n // Allow return value of strict function to be boolean or string\n // (or null/undefined, meaning no further processing).\n // But catch any exceptions thrown by function, treating them\n // like \"error\".\n try {\n strict = strict(errorCode, errorMsg, token);\n } catch (error) {\n strict = \"error\";\n }\n }\n\n if (!strict || strict === \"ignore\") {\n return false;\n } else if (strict === true || strict === \"error\") {\n return true;\n } else if (strict === \"warn\") {\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to 'warn': \" + (errorMsg + \" [\" + errorCode + \"]\"));\n return false;\n } else {\n // won't happen in type-safe code\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to \" + (\"unrecognized '\" + strict + \"': \" + errorMsg + \" [\" + errorCode + \"]\"));\n return false;\n }\n }\n /**\n * Check whether to test potentially dangerous input, and return\n * `true` (trusted) or `false` (untrusted). The sole argument `context`\n * should be an object with `command` field specifying the relevant LaTeX\n * command (as a string starting with `\\`), and any other arguments, etc.\n * If `context` has a `url` field, a `protocol` field will automatically\n * get added by this function (changing the specified object).\n */\n\n\n isTrusted(context) {\n if (context.url && !context.protocol) {\n const protocol = utils.protocolFromUrl(context.url);\n\n if (protocol == null) {\n return false;\n }\n\n context.protocol = protocol;\n }\n\n const trust = typeof this.trust === \"function\" ? this.trust(context) : this.trust;\n return Boolean(trust);\n }\n\n}\n;// CONCATENATED MODULE: ./src/Style.js\n/**\n * This file contains information and classes for the various kinds of styles\n * used in TeX. It provides a generic `Style` class, which holds information\n * about a specific style. It then provides instances of all the different kinds\n * of styles possible, and provides functions to move between them and get\n * information about them.\n */\n\n/**\n * The main style class. Contains a unique id for the style, a size (which is\n * the same for cramped and uncramped version of a style), and a cramped flag.\n */\nclass Style {\n constructor(id, size, cramped) {\n this.id = void 0;\n this.size = void 0;\n this.cramped = void 0;\n this.id = id;\n this.size = size;\n this.cramped = cramped;\n }\n /**\n * Get the style of a superscript given a base in the current style.\n */\n\n\n sup() {\n return styles[sup[this.id]];\n }\n /**\n * Get the style of a subscript given a base in the current style.\n */\n\n\n sub() {\n return styles[sub[this.id]];\n }\n /**\n * Get the style of a fraction numerator given the fraction in the current\n * style.\n */\n\n\n fracNum() {\n return styles[fracNum[this.id]];\n }\n /**\n * Get the style of a fraction denominator given the fraction in the current\n * style.\n */\n\n\n fracDen() {\n return styles[fracDen[this.id]];\n }\n /**\n * Get the cramped version of a style (in particular, cramping a cramped style\n * doesn't change the style).\n */\n\n\n cramp() {\n return styles[cramp[this.id]];\n }\n /**\n * Get a text or display version of this style.\n */\n\n\n text() {\n return styles[Style_text[this.id]];\n }\n /**\n * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle)\n */\n\n\n isTight() {\n return this.size >= 2;\n }\n\n} // Export an interface for type checking, but don't expose the implementation.\n// This way, no more styles can be generated.\n\n\n// IDs of the different styles\nconst D = 0;\nconst Dc = 1;\nconst T = 2;\nconst Tc = 3;\nconst S = 4;\nconst Sc = 5;\nconst SS = 6;\nconst SSc = 7; // Instances of the different styles\n\nconst styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)]; // Lookup tables for switching from one style to another\n\nconst sup = [S, Sc, S, Sc, SS, SSc, SS, SSc];\nconst sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc];\nconst fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc];\nconst fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc];\nconst cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc];\nconst Style_text = [D, Dc, T, Tc, T, Tc, T, Tc]; // We only export some of the styles.\n\n/* harmony default export */ var src_Style = ({\n DISPLAY: styles[D],\n TEXT: styles[T],\n SCRIPT: styles[S],\n SCRIPTSCRIPT: styles[SS]\n});\n;// CONCATENATED MODULE: ./src/unicodeScripts.js\n/*\n * This file defines the Unicode scripts and script families that we\n * support. To add new scripts or families, just add a new entry to the\n * scriptData array below. Adding scripts to the scriptData array allows\n * characters from that script to appear in \\text{} environments.\n */\n\n/**\n * Each script or script family has a name and an array of blocks.\n * Each block is an array of two numbers which specify the start and\n * end points (inclusive) of a block of Unicode codepoints.\n */\n\n/**\n * Unicode block data for the families of scripts we support in \\text{}.\n * Scripts only need to appear here if they do not have font metrics.\n */\nconst scriptData = [{\n // Latin characters beyond the Latin-1 characters we have metrics for.\n // Needed for Czech, Hungarian and Turkish text, for example.\n name: 'latin',\n blocks: [[0x0100, 0x024f], // Latin Extended-A and Latin Extended-B\n [0x0300, 0x036f] // Combining Diacritical marks\n ]\n}, {\n // The Cyrillic script used by Russian and related languages.\n // A Cyrillic subset used to be supported as explicitly defined\n // symbols in symbols.js\n name: 'cyrillic',\n blocks: [[0x0400, 0x04ff]]\n}, {\n // Armenian\n name: 'armenian',\n blocks: [[0x0530, 0x058F]]\n}, {\n // The Brahmic scripts of South and Southeast Asia\n // Devanagari (0900–097F)\n // Bengali (0980–09FF)\n // Gurmukhi (0A00–0A7F)\n // Gujarati (0A80–0AFF)\n // Oriya (0B00–0B7F)\n // Tamil (0B80–0BFF)\n // Telugu (0C00–0C7F)\n // Kannada (0C80–0CFF)\n // Malayalam (0D00–0D7F)\n // Sinhala (0D80–0DFF)\n // Thai (0E00–0E7F)\n // Lao (0E80–0EFF)\n // Tibetan (0F00–0FFF)\n // Myanmar (1000–109F)\n name: 'brahmic',\n blocks: [[0x0900, 0x109F]]\n}, {\n name: 'georgian',\n blocks: [[0x10A0, 0x10ff]]\n}, {\n // Chinese and Japanese.\n // The \"k\" in cjk is for Korean, but we've separated Korean out\n name: \"cjk\",\n blocks: [[0x3000, 0x30FF], // CJK symbols and punctuation, Hiragana, Katakana\n [0x4E00, 0x9FAF], // CJK ideograms\n [0xFF00, 0xFF60] // Fullwidth punctuation\n // TODO: add halfwidth Katakana and Romanji glyphs\n ]\n}, {\n // Korean\n name: 'hangul',\n blocks: [[0xAC00, 0xD7AF]]\n}];\n/**\n * Given a codepoint, return the name of the script or script family\n * it is from, or null if it is not part of a known block\n */\n\nfunction scriptFromCodepoint(codepoint) {\n for (let i = 0; i < scriptData.length; i++) {\n const script = scriptData[i];\n\n for (let i = 0; i < script.blocks.length; i++) {\n const block = script.blocks[i];\n\n if (codepoint >= block[0] && codepoint <= block[1]) {\n return script.name;\n }\n }\n }\n\n return null;\n}\n/**\n * A flattened version of all the supported blocks in a single array.\n * This is an optimization to make supportedCodepoint() fast.\n */\n\nconst allBlocks = [];\nscriptData.forEach(s => s.blocks.forEach(b => allBlocks.push(...b)));\n/**\n * Given a codepoint, return true if it falls within one of the\n * scripts or script families defined above and false otherwise.\n *\n * Micro benchmarks shows that this is faster than\n * /[\\u3000-\\u30FF\\u4E00-\\u9FAF\\uFF00-\\uFF60\\uAC00-\\uD7AF\\u0900-\\u109F]/.test()\n * in Firefox, Chrome and Node.\n */\n\nfunction supportedCodepoint(codepoint) {\n for (let i = 0; i < allBlocks.length; i += 2) {\n if (codepoint >= allBlocks[i] && codepoint <= allBlocks[i + 1]) {\n return true;\n }\n }\n\n return false;\n}\n;// CONCATENATED MODULE: ./src/svgGeometry.js\n/**\n * This file provides support to domTree.js and delimiter.js.\n * It's a storehouse of path geometry for SVG images.\n */\n// In all paths below, the viewBox-to-em scale is 1000:1.\nconst hLinePad = 80; // padding above a sqrt vinculum. Prevents image cropping.\n// The vinculum of a \\sqrt can be made thicker by a KaTeX rendering option.\n// Think of variable extraVinculum as two detours in the SVG path.\n// The detour begins at the lower left of the area labeled extraVinculum below.\n// The detour proceeds one extraVinculum distance up and slightly to the right,\n// displacing the radiused corner between surd and vinculum. The radius is\n// traversed as usual, then the detour resumes. It goes right, to the end of\n// the very long vinculum, then down one extraVinculum distance,\n// after which it resumes regular path geometry for the radical.\n\n/* vinculum\n /\n /▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒←extraVinculum\n / █████████████████████←0.04em (40 unit) std vinculum thickness\n / /\n / /\n / /\\\n / / surd\n*/\n\nconst sqrtMain = function (extraVinculum, hLinePad) {\n // sqrtMain path geometry is from glyph U221A in the font KaTeX Main\n return \"M95,\" + (622 + extraVinculum + hLinePad) + \"\\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\\nc69,-144,104.5,-217.7,106.5,-221\\nl\" + extraVinculum / 2.075 + \" -\" + extraVinculum + \"\\nc5.3,-9.3,12,-14,20,-14\\nH400000v\" + (40 + extraVinculum) + \"H845.2724\\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\\nM\" + (834 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\n\nconst sqrtSize1 = function (extraVinculum, hLinePad) {\n // size1 is from glyph U221A in the font KaTeX_Size1-Regular\n return \"M263,\" + (601 + extraVinculum + hLinePad) + \"c0.7,0,18,39.7,52,119\\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\\nc340,-704.7,510.7,-1060.3,512,-1067\\nl\" + extraVinculum / 2.084 + \" -\" + extraVinculum + \"\\nc4.7,-7.3,11,-11,19,-11\\nH40000v\" + (40 + extraVinculum) + \"H1012.3\\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\\nM\" + (1001 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\n\nconst sqrtSize2 = function (extraVinculum, hLinePad) {\n // size2 is from glyph U221A in the font KaTeX_Size2-Regular\n return \"M983 \" + (10 + extraVinculum + hLinePad) + \"\\nl\" + extraVinculum / 3.13 + \" -\" + extraVinculum + \"\\nc4,-6.7,10,-10,18,-10 H400000v\" + (40 + extraVinculum) + \"\\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\\nM\" + (1001 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\n\nconst sqrtSize3 = function (extraVinculum, hLinePad) {\n // size3 is from glyph U221A in the font KaTeX_Size3-Regular\n return \"M424,\" + (2398 + extraVinculum + hLinePad) + \"\\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\\nl\" + extraVinculum / 4.223 + \" -\" + extraVinculum + \"c4,-6.7,10,-10,18,-10 H400000\\nv\" + (40 + extraVinculum) + \"H1014.6\\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\\nc-2,6,-10,9,-24,9\\nc-8,0,-12,-0.7,-12,-2z M\" + (1001 + extraVinculum) + \" \" + hLinePad + \"\\nh400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\n\nconst sqrtSize4 = function (extraVinculum, hLinePad) {\n // size4 is from glyph U221A in the font KaTeX_Size4-Regular\n return \"M473,\" + (2713 + extraVinculum + hLinePad) + \"\\nc339.3,-1799.3,509.3,-2700,510,-2702 l\" + extraVinculum / 5.298 + \" -\" + extraVinculum + \"\\nc3.3,-7.3,9.3,-11,18,-11 H400000v\" + (40 + extraVinculum) + \"H1017.7\\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\\n606zM\" + (1001 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"H1017.7z\";\n};\n\nconst phasePath = function (y) {\n const x = y / 2; // x coordinate at top of angle\n\n return \"M400000 \" + y + \" H0 L\" + x + \" 0 l65 45 L145 \" + (y - 80) + \" H400000z\";\n};\n\nconst sqrtTall = function (extraVinculum, hLinePad, viewBoxHeight) {\n // sqrtTall is from glyph U23B7 in the font KaTeX_Size4-Regular\n // One path edge has a variable length. It runs vertically from the vinculum\n // to a point near (14 units) the bottom of the surd. The vinculum\n // is normally 40 units thick. So the length of the line in question is:\n const vertSegment = viewBoxHeight - 54 - hLinePad - extraVinculum;\n return \"M702 \" + (extraVinculum + hLinePad) + \"H400000\" + (40 + extraVinculum) + \"\\nH742v\" + vertSegment + \"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\\n219 661 l218 661zM702 \" + hLinePad + \"H400000v\" + (40 + extraVinculum) + \"H742z\";\n};\n\nconst sqrtPath = function (size, extraVinculum, viewBoxHeight) {\n extraVinculum = 1000 * extraVinculum; // Convert from document ems to viewBox.\n\n let path = \"\";\n\n switch (size) {\n case \"sqrtMain\":\n path = sqrtMain(extraVinculum, hLinePad);\n break;\n\n case \"sqrtSize1\":\n path = sqrtSize1(extraVinculum, hLinePad);\n break;\n\n case \"sqrtSize2\":\n path = sqrtSize2(extraVinculum, hLinePad);\n break;\n\n case \"sqrtSize3\":\n path = sqrtSize3(extraVinculum, hLinePad);\n break;\n\n case \"sqrtSize4\":\n path = sqrtSize4(extraVinculum, hLinePad);\n break;\n\n case \"sqrtTall\":\n path = sqrtTall(extraVinculum, hLinePad, viewBoxHeight);\n }\n\n return path;\n};\nconst innerPath = function (name, height) {\n // The inner part of stretchy tall delimiters\n switch (name) {\n case \"\\u239c\":\n return \"M291 0 H417 V\" + height + \" H291z M291 0 H417 V\" + height + \" H291z\";\n\n case \"\\u2223\":\n return \"M145 0 H188 V\" + height + \" H145z M145 0 H188 V\" + height + \" H145z\";\n\n case \"\\u2225\":\n return \"M145 0 H188 V\" + height + \" H145z M145 0 H188 V\" + height + \" H145z\" + (\"M367 0 H410 V\" + height + \" H367z M367 0 H410 V\" + height + \" H367z\");\n\n case \"\\u239f\":\n return \"M457 0 H583 V\" + height + \" H457z M457 0 H583 V\" + height + \" H457z\";\n\n case \"\\u23a2\":\n return \"M319 0 H403 V\" + height + \" H319z M319 0 H403 V\" + height + \" H319z\";\n\n case \"\\u23a5\":\n return \"M263 0 H347 V\" + height + \" H263z M263 0 H347 V\" + height + \" H263z\";\n\n case \"\\u23aa\":\n return \"M384 0 H504 V\" + height + \" H384z M384 0 H504 V\" + height + \" H384z\";\n\n case \"\\u23d0\":\n return \"M312 0 H355 V\" + height + \" H312z M312 0 H355 V\" + height + \" H312z\";\n\n case \"\\u2016\":\n return \"M257 0 H300 V\" + height + \" H257z M257 0 H300 V\" + height + \" H257z\" + (\"M478 0 H521 V\" + height + \" H478z M478 0 H521 V\" + height + \" H478z\");\n\n default:\n return \"\";\n }\n};\nconst path = {\n // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main\n doubleleftarrow: \"M262 157\\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\\nm8 0v40h399730v-40zm0 194v40h399730v-40z\",\n // doublerightarrow is from glyph U+21D2 in font KaTeX Main\n doublerightarrow: \"M399738 392l\\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z\",\n // leftarrow is from glyph U+2190 in font KaTeX Main\n leftarrow: \"M400000 241H110l3-3c68.7-52.7 113.7-120\\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\\n l-3-3h399890zM100 241v40h399900v-40z\",\n // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular\n leftbrace: \"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z\",\n leftbraceunder: \"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z\",\n // overgroup is from the MnSymbol package (public domain)\n leftgroup: \"M400000 80\\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\\n 435 0h399565z\",\n leftgroupunder: \"M400000 262\\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\\n 435 219h399565z\",\n // Harpoons are from glyph U+21BD in font KaTeX Main\n leftharpoon: \"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z\",\n leftharpoonplus: \"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\\nm0 0v40h400000v-40z\",\n leftharpoondown: \"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z\",\n leftharpoondownplus: \"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z\",\n // hook is from glyph U+21A9 in font KaTeX Main\n lefthook: \"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\\n 71.5 23h399859zM103 281v-40h399897v40z\",\n leftlinesegment: \"M40 281 V428 H0 V94 H40 V241 H400000 v40z\\nM40 281 V428 H0 V94 H40 V241 H400000 v40z\",\n leftmapsto: \"M40 281 V448H0V74H40V241H400000v40z\\nM40 281 V448H0V74H40V241H400000v40z\",\n // tofrom is from glyph U+21C4 in font KaTeX AMS Regular\n leftToFrom: \"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z\",\n longequal: \"M0 50 h400000 v40H0z m0 194h40000v40H0z\\nM0 50 h400000 v40H0z m0 194h40000v40H0z\",\n midbrace: \"M200428 334\\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z\",\n midbraceunder: \"M199572 214\\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z\",\n oiintSize1: \"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z\",\n oiintSize2: \"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\\nc0 110 84 276 504 276s502.4-166 502.4-276z\",\n oiiintSize1: \"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z\",\n oiiintSize2: \"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z\",\n rightarrow: \"M0 241v40h399891c-47.3 35.3-84 78-110 128\\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\\n 151.7 139 205zm0 0v40h399900v-40z\",\n rightbrace: \"M400000 542l\\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z\",\n rightbraceunder: \"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z\",\n rightgroup: \"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\\n 3-1 3-3v-38c-76-158-257-219-435-219H0z\",\n rightgroupunder: \"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z\",\n rightharpoon: \"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\\n 69.2 92 94.5zm0 0v40h399900v-40z\",\n rightharpoonplus: \"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z\",\n rightharpoondown: \"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z\",\n rightharpoondownplus: \"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\\nm0-194v40h400000v-40zm0 0v40h400000v-40z\",\n righthook: \"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z\",\n rightlinesegment: \"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z\",\n rightToFrom: \"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z\",\n // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular\n twoheadleftarrow: \"M0 167c68 40\\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z\",\n twoheadrightarrow: \"M400000 167\\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z\",\n // tilde1 is a modified version of a glyph from the MnSymbol package\n tilde1: \"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\\n-68.267.847-113-73.952-191-73.952z\",\n // ditto tilde2, tilde3, & tilde4\n tilde2: \"M344 55.266c-142 0-300.638 81.316-311.5 86.418\\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z\",\n tilde3: \"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\\n -338 0-409-156.573-744-156.573z\",\n tilde4: \"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\\n -175.236-744-175.236z\",\n // vec is from glyph U+20D7 in font KaTeX Main\n vec: \"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\\nc-16-25.333-24-45-24-59z\",\n // widehat1 is a modified version of a glyph from the MnSymbol package\n widehat1: \"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z\",\n // ditto widehat2, widehat3, & widehat4\n widehat2: \"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",\n widehat3: \"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",\n widehat4: \"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",\n // widecheck paths are all inverted versions of widehat\n widecheck1: \"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z\",\n widecheck2: \"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",\n widecheck3: \"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",\n widecheck4: \"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",\n // The next ten paths support reaction arrows from the mhchem package.\n // Arrows for \\ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX\n // baraboveleftarrow is mostly from glyph U+2190 in font KaTeX Main\n baraboveleftarrow: \"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z\",\n // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main\n rightarrowabovebar: \"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z\",\n // The short left harpoon has 0.5em (i.e. 500 units) kern on the left end.\n // Ref from mhchem.sty: \\rlap{\\raisebox{-.22ex}{$\\kern0.5em\n baraboveshortleftharpoon: \"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z\",\n rightharpoonaboveshortbar: \"M0,241 l0,40c399126,0,399993,0,399993,0\\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z\",\n shortbaraboveleftharpoon: \"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z\",\n shortrightharpoonabovebar: \"M53,241l0,40c398570,0,399437,0,399437,0\\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z\"\n};\nconst tallDelim = function (label, midHeight) {\n switch (label) {\n case \"lbrack\":\n return \"M403 1759 V84 H666 V0 H319 V1759 v\" + midHeight + \" v1759 h347 v-84\\nH403z M403 1759 V0 H319 V1759 v\" + midHeight + \" v1759 h84z\";\n\n case \"rbrack\":\n return \"M347 1759 V0 H0 V84 H263 V1759 v\" + midHeight + \" v1759 H0 v84 H347z\\nM347 1759 V0 H263 V1759 v\" + midHeight + \" v1759 h84z\";\n\n case \"vert\":\n return \"M145 15 v585 v\" + midHeight + \" v585 c2.667,10,9.667,15,21,15\\nc10,0,16.667,-5,20,-15 v-585 v\" + -midHeight + \" v-585 c-2.667,-10,-9.667,-15,-21,-15\\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v\" + midHeight + \" v585 h43z\";\n\n case \"doublevert\":\n return \"M145 15 v585 v\" + midHeight + \" v585 c2.667,10,9.667,15,21,15\\nc10,0,16.667,-5,20,-15 v-585 v\" + -midHeight + \" v-585 c-2.667,-10,-9.667,-15,-21,-15\\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v\" + midHeight + \" v585 h43z\\nM367 15 v585 v\" + midHeight + \" v585 c2.667,10,9.667,15,21,15\\nc10,0,16.667,-5,20,-15 v-585 v\" + -midHeight + \" v-585 c-2.667,-10,-9.667,-15,-21,-15\\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v\" + midHeight + \" v585 h43z\";\n\n case \"lfloor\":\n return \"M319 602 V0 H403 V602 v\" + midHeight + \" v1715 h263 v84 H319z\\nMM319 602 V0 H403 V602 v\" + midHeight + \" v1715 H319z\";\n\n case \"rfloor\":\n return \"M319 602 V0 H403 V602 v\" + midHeight + \" v1799 H0 v-84 H319z\\nMM319 602 V0 H403 V602 v\" + midHeight + \" v1715 H319z\";\n\n case \"lceil\":\n return \"M403 1759 V84 H666 V0 H319 V1759 v\" + midHeight + \" v602 h84z\\nM403 1759 V0 H319 V1759 v\" + midHeight + \" v602 h84z\";\n\n case \"rceil\":\n return \"M347 1759 V0 H0 V84 H263 V1759 v\" + midHeight + \" v602 h84z\\nM347 1759 V0 h-84 V1759 v\" + midHeight + \" v602 h84z\";\n\n case \"lparen\":\n return \"M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\\n-36,557 l0,\" + (midHeight + 84) + \"c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\\nl0,-\" + (midHeight + 92) + \"c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z\";\n\n case \"rparen\":\n return \"M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,\" + (midHeight + 9) + \"\\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\\nl0,-\" + (midHeight + 144) + \"c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z\";\n\n default:\n // We should not ever get here.\n throw new Error(\"Unknown stretchy delimiter.\");\n }\n};\n;// CONCATENATED MODULE: ./src/tree.js\n\n\n/**\n * This node represents a document fragment, which contains elements, but when\n * placed into the DOM doesn't have any representation itself. It only contains\n * children and doesn't have any DOM node properties.\n */\nclass DocumentFragment {\n // HtmlDomNode\n // Never used; needed for satisfying interface.\n constructor(children) {\n this.children = void 0;\n this.classes = void 0;\n this.height = void 0;\n this.depth = void 0;\n this.maxFontSize = void 0;\n this.style = void 0;\n this.children = children;\n this.classes = [];\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n this.style = {};\n }\n\n hasClass(className) {\n return utils.contains(this.classes, className);\n }\n /** Convert the fragment into a node. */\n\n\n toNode() {\n const frag = document.createDocumentFragment();\n\n for (let i = 0; i < this.children.length; i++) {\n frag.appendChild(this.children[i].toNode());\n }\n\n return frag;\n }\n /** Convert the fragment into HTML markup. */\n\n\n toMarkup() {\n let markup = \"\"; // Simply concatenate the markup for the children together.\n\n for (let i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n return markup;\n }\n /**\n * Converts the math node into a string, similar to innerText. Applies to\n * MathDomNode's only.\n */\n\n\n toText() {\n // To avoid this, we would subclass documentFragment separately for\n // MathML, but polyfills for subclassing is expensive per PR 1469.\n // $FlowFixMe: Only works for ChildType = MathDomNode.\n const toText = child => child.toText();\n\n return this.children.map(toText).join(\"\");\n }\n\n}\n;// CONCATENATED MODULE: ./src/fontMetricsData.js\n// This file is GENERATED by buildMetrics.sh. DO NOT MODIFY.\n/* harmony default export */ var fontMetricsData = ({\n \"AMS-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"65\": [0, 0.68889, 0, 0, 0.72222],\n \"66\": [0, 0.68889, 0, 0, 0.66667],\n \"67\": [0, 0.68889, 0, 0, 0.72222],\n \"68\": [0, 0.68889, 0, 0, 0.72222],\n \"69\": [0, 0.68889, 0, 0, 0.66667],\n \"70\": [0, 0.68889, 0, 0, 0.61111],\n \"71\": [0, 0.68889, 0, 0, 0.77778],\n \"72\": [0, 0.68889, 0, 0, 0.77778],\n \"73\": [0, 0.68889, 0, 0, 0.38889],\n \"74\": [0.16667, 0.68889, 0, 0, 0.5],\n \"75\": [0, 0.68889, 0, 0, 0.77778],\n \"76\": [0, 0.68889, 0, 0, 0.66667],\n \"77\": [0, 0.68889, 0, 0, 0.94445],\n \"78\": [0, 0.68889, 0, 0, 0.72222],\n \"79\": [0.16667, 0.68889, 0, 0, 0.77778],\n \"80\": [0, 0.68889, 0, 0, 0.61111],\n \"81\": [0.16667, 0.68889, 0, 0, 0.77778],\n \"82\": [0, 0.68889, 0, 0, 0.72222],\n \"83\": [0, 0.68889, 0, 0, 0.55556],\n \"84\": [0, 0.68889, 0, 0, 0.66667],\n \"85\": [0, 0.68889, 0, 0, 0.72222],\n \"86\": [0, 0.68889, 0, 0, 0.72222],\n \"87\": [0, 0.68889, 0, 0, 1.0],\n \"88\": [0, 0.68889, 0, 0, 0.72222],\n \"89\": [0, 0.68889, 0, 0, 0.72222],\n \"90\": [0, 0.68889, 0, 0, 0.66667],\n \"107\": [0, 0.68889, 0, 0, 0.55556],\n \"160\": [0, 0, 0, 0, 0.25],\n \"165\": [0, 0.675, 0.025, 0, 0.75],\n \"174\": [0.15559, 0.69224, 0, 0, 0.94666],\n \"240\": [0, 0.68889, 0, 0, 0.55556],\n \"295\": [0, 0.68889, 0, 0, 0.54028],\n \"710\": [0, 0.825, 0, 0, 2.33334],\n \"732\": [0, 0.9, 0, 0, 2.33334],\n \"770\": [0, 0.825, 0, 0, 2.33334],\n \"771\": [0, 0.9, 0, 0, 2.33334],\n \"989\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"1008\": [0, 0.43056, 0.04028, 0, 0.66667],\n \"8245\": [0, 0.54986, 0, 0, 0.275],\n \"8463\": [0, 0.68889, 0, 0, 0.54028],\n \"8487\": [0, 0.68889, 0, 0, 0.72222],\n \"8498\": [0, 0.68889, 0, 0, 0.55556],\n \"8502\": [0, 0.68889, 0, 0, 0.66667],\n \"8503\": [0, 0.68889, 0, 0, 0.44445],\n \"8504\": [0, 0.68889, 0, 0, 0.66667],\n \"8513\": [0, 0.68889, 0, 0, 0.63889],\n \"8592\": [-0.03598, 0.46402, 0, 0, 0.5],\n \"8594\": [-0.03598, 0.46402, 0, 0, 0.5],\n \"8602\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8603\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8606\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8608\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8610\": [0.01354, 0.52239, 0, 0, 1.11111],\n \"8611\": [0.01354, 0.52239, 0, 0, 1.11111],\n \"8619\": [0, 0.54986, 0, 0, 1.0],\n \"8620\": [0, 0.54986, 0, 0, 1.0],\n \"8621\": [-0.13313, 0.37788, 0, 0, 1.38889],\n \"8622\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8624\": [0, 0.69224, 0, 0, 0.5],\n \"8625\": [0, 0.69224, 0, 0, 0.5],\n \"8630\": [0, 0.43056, 0, 0, 1.0],\n \"8631\": [0, 0.43056, 0, 0, 1.0],\n \"8634\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8635\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8638\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8639\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8642\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8643\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8644\": [0.1808, 0.675, 0, 0, 1.0],\n \"8646\": [0.1808, 0.675, 0, 0, 1.0],\n \"8647\": [0.1808, 0.675, 0, 0, 1.0],\n \"8648\": [0.19444, 0.69224, 0, 0, 0.83334],\n \"8649\": [0.1808, 0.675, 0, 0, 1.0],\n \"8650\": [0.19444, 0.69224, 0, 0, 0.83334],\n \"8651\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8652\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8653\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8654\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8655\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8666\": [0.13667, 0.63667, 0, 0, 1.0],\n \"8667\": [0.13667, 0.63667, 0, 0, 1.0],\n \"8669\": [-0.13313, 0.37788, 0, 0, 1.0],\n \"8672\": [-0.064, 0.437, 0, 0, 1.334],\n \"8674\": [-0.064, 0.437, 0, 0, 1.334],\n \"8705\": [0, 0.825, 0, 0, 0.5],\n \"8708\": [0, 0.68889, 0, 0, 0.55556],\n \"8709\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8717\": [0, 0.43056, 0, 0, 0.42917],\n \"8722\": [-0.03598, 0.46402, 0, 0, 0.5],\n \"8724\": [0.08198, 0.69224, 0, 0, 0.77778],\n \"8726\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8733\": [0, 0.69224, 0, 0, 0.77778],\n \"8736\": [0, 0.69224, 0, 0, 0.72222],\n \"8737\": [0, 0.69224, 0, 0, 0.72222],\n \"8738\": [0.03517, 0.52239, 0, 0, 0.72222],\n \"8739\": [0.08167, 0.58167, 0, 0, 0.22222],\n \"8740\": [0.25142, 0.74111, 0, 0, 0.27778],\n \"8741\": [0.08167, 0.58167, 0, 0, 0.38889],\n \"8742\": [0.25142, 0.74111, 0, 0, 0.5],\n \"8756\": [0, 0.69224, 0, 0, 0.66667],\n \"8757\": [0, 0.69224, 0, 0, 0.66667],\n \"8764\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"8765\": [-0.13313, 0.37788, 0, 0, 0.77778],\n \"8769\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"8770\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8774\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8776\": [-0.01688, 0.48312, 0, 0, 0.77778],\n \"8778\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8782\": [0.06062, 0.54986, 0, 0, 0.77778],\n \"8783\": [0.06062, 0.54986, 0, 0, 0.77778],\n \"8785\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8786\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8787\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8790\": [0, 0.69224, 0, 0, 0.77778],\n \"8791\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8796\": [0.08198, 0.91667, 0, 0, 0.77778],\n \"8806\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"8807\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"8808\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"8809\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"8812\": [0.25583, 0.75583, 0, 0, 0.5],\n \"8814\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8815\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8816\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8817\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8818\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8819\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8822\": [0.1808, 0.675, 0, 0, 0.77778],\n \"8823\": [0.1808, 0.675, 0, 0, 0.77778],\n \"8828\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8829\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8830\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8831\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8832\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8833\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8840\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8841\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8842\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8843\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8847\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8848\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8858\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8859\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8861\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8862\": [0, 0.675, 0, 0, 0.77778],\n \"8863\": [0, 0.675, 0, 0, 0.77778],\n \"8864\": [0, 0.675, 0, 0, 0.77778],\n \"8865\": [0, 0.675, 0, 0, 0.77778],\n \"8872\": [0, 0.69224, 0, 0, 0.61111],\n \"8873\": [0, 0.69224, 0, 0, 0.72222],\n \"8874\": [0, 0.69224, 0, 0, 0.88889],\n \"8876\": [0, 0.68889, 0, 0, 0.61111],\n \"8877\": [0, 0.68889, 0, 0, 0.61111],\n \"8878\": [0, 0.68889, 0, 0, 0.72222],\n \"8879\": [0, 0.68889, 0, 0, 0.72222],\n \"8882\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8883\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8884\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8885\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8888\": [0, 0.54986, 0, 0, 1.11111],\n \"8890\": [0.19444, 0.43056, 0, 0, 0.55556],\n \"8891\": [0.19444, 0.69224, 0, 0, 0.61111],\n \"8892\": [0.19444, 0.69224, 0, 0, 0.61111],\n \"8901\": [0, 0.54986, 0, 0, 0.27778],\n \"8903\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8905\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8906\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8907\": [0, 0.69224, 0, 0, 0.77778],\n \"8908\": [0, 0.69224, 0, 0, 0.77778],\n \"8909\": [-0.03598, 0.46402, 0, 0, 0.77778],\n \"8910\": [0, 0.54986, 0, 0, 0.76042],\n \"8911\": [0, 0.54986, 0, 0, 0.76042],\n \"8912\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8913\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8914\": [0, 0.54986, 0, 0, 0.66667],\n \"8915\": [0, 0.54986, 0, 0, 0.66667],\n \"8916\": [0, 0.69224, 0, 0, 0.66667],\n \"8918\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8919\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8920\": [0.03517, 0.54986, 0, 0, 1.33334],\n \"8921\": [0.03517, 0.54986, 0, 0, 1.33334],\n \"8922\": [0.38569, 0.88569, 0, 0, 0.77778],\n \"8923\": [0.38569, 0.88569, 0, 0, 0.77778],\n \"8926\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8927\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8928\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8929\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8934\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8935\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8936\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8937\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8938\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8939\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8940\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8941\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8994\": [0.19444, 0.69224, 0, 0, 0.77778],\n \"8995\": [0.19444, 0.69224, 0, 0, 0.77778],\n \"9416\": [0.15559, 0.69224, 0, 0, 0.90222],\n \"9484\": [0, 0.69224, 0, 0, 0.5],\n \"9488\": [0, 0.69224, 0, 0, 0.5],\n \"9492\": [0, 0.37788, 0, 0, 0.5],\n \"9496\": [0, 0.37788, 0, 0, 0.5],\n \"9585\": [0.19444, 0.68889, 0, 0, 0.88889],\n \"9586\": [0.19444, 0.74111, 0, 0, 0.88889],\n \"9632\": [0, 0.675, 0, 0, 0.77778],\n \"9633\": [0, 0.675, 0, 0, 0.77778],\n \"9650\": [0, 0.54986, 0, 0, 0.72222],\n \"9651\": [0, 0.54986, 0, 0, 0.72222],\n \"9654\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"9660\": [0, 0.54986, 0, 0, 0.72222],\n \"9661\": [0, 0.54986, 0, 0, 0.72222],\n \"9664\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"9674\": [0.11111, 0.69224, 0, 0, 0.66667],\n \"9733\": [0.19444, 0.69224, 0, 0, 0.94445],\n \"10003\": [0, 0.69224, 0, 0, 0.83334],\n \"10016\": [0, 0.69224, 0, 0, 0.83334],\n \"10731\": [0.11111, 0.69224, 0, 0, 0.66667],\n \"10846\": [0.19444, 0.75583, 0, 0, 0.61111],\n \"10877\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10878\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10885\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10886\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10887\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"10888\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"10889\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10890\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10891\": [0.48256, 0.98256, 0, 0, 0.77778],\n \"10892\": [0.48256, 0.98256, 0, 0, 0.77778],\n \"10901\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10902\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10933\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"10934\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"10935\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10936\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10937\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10938\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10949\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10950\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10955\": [0.28481, 0.79383, 0, 0, 0.77778],\n \"10956\": [0.28481, 0.79383, 0, 0, 0.77778],\n \"57350\": [0.08167, 0.58167, 0, 0, 0.22222],\n \"57351\": [0.08167, 0.58167, 0, 0, 0.38889],\n \"57352\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"57353\": [0, 0.43056, 0.04028, 0, 0.66667],\n \"57356\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57357\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57358\": [0.41951, 0.91951, 0, 0, 0.77778],\n \"57359\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"57360\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"57361\": [0.41951, 0.91951, 0, 0, 0.77778],\n \"57366\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57367\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57368\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57369\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57370\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"57371\": [0.13597, 0.63597, 0, 0, 0.77778]\n },\n \"Caligraphic-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"65\": [0, 0.68333, 0, 0.19445, 0.79847],\n \"66\": [0, 0.68333, 0.03041, 0.13889, 0.65681],\n \"67\": [0, 0.68333, 0.05834, 0.13889, 0.52653],\n \"68\": [0, 0.68333, 0.02778, 0.08334, 0.77139],\n \"69\": [0, 0.68333, 0.08944, 0.11111, 0.52778],\n \"70\": [0, 0.68333, 0.09931, 0.11111, 0.71875],\n \"71\": [0.09722, 0.68333, 0.0593, 0.11111, 0.59487],\n \"72\": [0, 0.68333, 0.00965, 0.11111, 0.84452],\n \"73\": [0, 0.68333, 0.07382, 0, 0.54452],\n \"74\": [0.09722, 0.68333, 0.18472, 0.16667, 0.67778],\n \"75\": [0, 0.68333, 0.01445, 0.05556, 0.76195],\n \"76\": [0, 0.68333, 0, 0.13889, 0.68972],\n \"77\": [0, 0.68333, 0, 0.13889, 1.2009],\n \"78\": [0, 0.68333, 0.14736, 0.08334, 0.82049],\n \"79\": [0, 0.68333, 0.02778, 0.11111, 0.79611],\n \"80\": [0, 0.68333, 0.08222, 0.08334, 0.69556],\n \"81\": [0.09722, 0.68333, 0, 0.11111, 0.81667],\n \"82\": [0, 0.68333, 0, 0.08334, 0.8475],\n \"83\": [0, 0.68333, 0.075, 0.13889, 0.60556],\n \"84\": [0, 0.68333, 0.25417, 0, 0.54464],\n \"85\": [0, 0.68333, 0.09931, 0.08334, 0.62583],\n \"86\": [0, 0.68333, 0.08222, 0, 0.61278],\n \"87\": [0, 0.68333, 0.08222, 0.08334, 0.98778],\n \"88\": [0, 0.68333, 0.14643, 0.13889, 0.7133],\n \"89\": [0.09722, 0.68333, 0.08222, 0.08334, 0.66834],\n \"90\": [0, 0.68333, 0.07944, 0.13889, 0.72473],\n \"160\": [0, 0, 0, 0, 0.25]\n },\n \"Fraktur-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69141, 0, 0, 0.29574],\n \"34\": [0, 0.69141, 0, 0, 0.21471],\n \"38\": [0, 0.69141, 0, 0, 0.73786],\n \"39\": [0, 0.69141, 0, 0, 0.21201],\n \"40\": [0.24982, 0.74947, 0, 0, 0.38865],\n \"41\": [0.24982, 0.74947, 0, 0, 0.38865],\n \"42\": [0, 0.62119, 0, 0, 0.27764],\n \"43\": [0.08319, 0.58283, 0, 0, 0.75623],\n \"44\": [0, 0.10803, 0, 0, 0.27764],\n \"45\": [0.08319, 0.58283, 0, 0, 0.75623],\n \"46\": [0, 0.10803, 0, 0, 0.27764],\n \"47\": [0.24982, 0.74947, 0, 0, 0.50181],\n \"48\": [0, 0.47534, 0, 0, 0.50181],\n \"49\": [0, 0.47534, 0, 0, 0.50181],\n \"50\": [0, 0.47534, 0, 0, 0.50181],\n \"51\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"52\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"53\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"54\": [0, 0.69141, 0, 0, 0.50181],\n \"55\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"56\": [0, 0.69141, 0, 0, 0.50181],\n \"57\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"58\": [0, 0.47534, 0, 0, 0.21606],\n \"59\": [0.12604, 0.47534, 0, 0, 0.21606],\n \"61\": [-0.13099, 0.36866, 0, 0, 0.75623],\n \"63\": [0, 0.69141, 0, 0, 0.36245],\n \"65\": [0, 0.69141, 0, 0, 0.7176],\n \"66\": [0, 0.69141, 0, 0, 0.88397],\n \"67\": [0, 0.69141, 0, 0, 0.61254],\n \"68\": [0, 0.69141, 0, 0, 0.83158],\n \"69\": [0, 0.69141, 0, 0, 0.66278],\n \"70\": [0.12604, 0.69141, 0, 0, 0.61119],\n \"71\": [0, 0.69141, 0, 0, 0.78539],\n \"72\": [0.06302, 0.69141, 0, 0, 0.7203],\n \"73\": [0, 0.69141, 0, 0, 0.55448],\n \"74\": [0.12604, 0.69141, 0, 0, 0.55231],\n \"75\": [0, 0.69141, 0, 0, 0.66845],\n \"76\": [0, 0.69141, 0, 0, 0.66602],\n \"77\": [0, 0.69141, 0, 0, 1.04953],\n \"78\": [0, 0.69141, 0, 0, 0.83212],\n \"79\": [0, 0.69141, 0, 0, 0.82699],\n \"80\": [0.18906, 0.69141, 0, 0, 0.82753],\n \"81\": [0.03781, 0.69141, 0, 0, 0.82699],\n \"82\": [0, 0.69141, 0, 0, 0.82807],\n \"83\": [0, 0.69141, 0, 0, 0.82861],\n \"84\": [0, 0.69141, 0, 0, 0.66899],\n \"85\": [0, 0.69141, 0, 0, 0.64576],\n \"86\": [0, 0.69141, 0, 0, 0.83131],\n \"87\": [0, 0.69141, 0, 0, 1.04602],\n \"88\": [0, 0.69141, 0, 0, 0.71922],\n \"89\": [0.18906, 0.69141, 0, 0, 0.83293],\n \"90\": [0.12604, 0.69141, 0, 0, 0.60201],\n \"91\": [0.24982, 0.74947, 0, 0, 0.27764],\n \"93\": [0.24982, 0.74947, 0, 0, 0.27764],\n \"94\": [0, 0.69141, 0, 0, 0.49965],\n \"97\": [0, 0.47534, 0, 0, 0.50046],\n \"98\": [0, 0.69141, 0, 0, 0.51315],\n \"99\": [0, 0.47534, 0, 0, 0.38946],\n \"100\": [0, 0.62119, 0, 0, 0.49857],\n \"101\": [0, 0.47534, 0, 0, 0.40053],\n \"102\": [0.18906, 0.69141, 0, 0, 0.32626],\n \"103\": [0.18906, 0.47534, 0, 0, 0.5037],\n \"104\": [0.18906, 0.69141, 0, 0, 0.52126],\n \"105\": [0, 0.69141, 0, 0, 0.27899],\n \"106\": [0, 0.69141, 0, 0, 0.28088],\n \"107\": [0, 0.69141, 0, 0, 0.38946],\n \"108\": [0, 0.69141, 0, 0, 0.27953],\n \"109\": [0, 0.47534, 0, 0, 0.76676],\n \"110\": [0, 0.47534, 0, 0, 0.52666],\n \"111\": [0, 0.47534, 0, 0, 0.48885],\n \"112\": [0.18906, 0.52396, 0, 0, 0.50046],\n \"113\": [0.18906, 0.47534, 0, 0, 0.48912],\n \"114\": [0, 0.47534, 0, 0, 0.38919],\n \"115\": [0, 0.47534, 0, 0, 0.44266],\n \"116\": [0, 0.62119, 0, 0, 0.33301],\n \"117\": [0, 0.47534, 0, 0, 0.5172],\n \"118\": [0, 0.52396, 0, 0, 0.5118],\n \"119\": [0, 0.52396, 0, 0, 0.77351],\n \"120\": [0.18906, 0.47534, 0, 0, 0.38865],\n \"121\": [0.18906, 0.47534, 0, 0, 0.49884],\n \"122\": [0.18906, 0.47534, 0, 0, 0.39054],\n \"160\": [0, 0, 0, 0, 0.25],\n \"8216\": [0, 0.69141, 0, 0, 0.21471],\n \"8217\": [0, 0.69141, 0, 0, 0.21471],\n \"58112\": [0, 0.62119, 0, 0, 0.49749],\n \"58113\": [0, 0.62119, 0, 0, 0.4983],\n \"58114\": [0.18906, 0.69141, 0, 0, 0.33328],\n \"58115\": [0.18906, 0.69141, 0, 0, 0.32923],\n \"58116\": [0.18906, 0.47534, 0, 0, 0.50343],\n \"58117\": [0, 0.69141, 0, 0, 0.33301],\n \"58118\": [0, 0.62119, 0, 0, 0.33409],\n \"58119\": [0, 0.47534, 0, 0, 0.50073]\n },\n \"Main-Bold\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.35],\n \"34\": [0, 0.69444, 0, 0, 0.60278],\n \"35\": [0.19444, 0.69444, 0, 0, 0.95833],\n \"36\": [0.05556, 0.75, 0, 0, 0.575],\n \"37\": [0.05556, 0.75, 0, 0, 0.95833],\n \"38\": [0, 0.69444, 0, 0, 0.89444],\n \"39\": [0, 0.69444, 0, 0, 0.31944],\n \"40\": [0.25, 0.75, 0, 0, 0.44722],\n \"41\": [0.25, 0.75, 0, 0, 0.44722],\n \"42\": [0, 0.75, 0, 0, 0.575],\n \"43\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"44\": [0.19444, 0.15556, 0, 0, 0.31944],\n \"45\": [0, 0.44444, 0, 0, 0.38333],\n \"46\": [0, 0.15556, 0, 0, 0.31944],\n \"47\": [0.25, 0.75, 0, 0, 0.575],\n \"48\": [0, 0.64444, 0, 0, 0.575],\n \"49\": [0, 0.64444, 0, 0, 0.575],\n \"50\": [0, 0.64444, 0, 0, 0.575],\n \"51\": [0, 0.64444, 0, 0, 0.575],\n \"52\": [0, 0.64444, 0, 0, 0.575],\n \"53\": [0, 0.64444, 0, 0, 0.575],\n \"54\": [0, 0.64444, 0, 0, 0.575],\n \"55\": [0, 0.64444, 0, 0, 0.575],\n \"56\": [0, 0.64444, 0, 0, 0.575],\n \"57\": [0, 0.64444, 0, 0, 0.575],\n \"58\": [0, 0.44444, 0, 0, 0.31944],\n \"59\": [0.19444, 0.44444, 0, 0, 0.31944],\n \"60\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"61\": [-0.10889, 0.39111, 0, 0, 0.89444],\n \"62\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"63\": [0, 0.69444, 0, 0, 0.54305],\n \"64\": [0, 0.69444, 0, 0, 0.89444],\n \"65\": [0, 0.68611, 0, 0, 0.86944],\n \"66\": [0, 0.68611, 0, 0, 0.81805],\n \"67\": [0, 0.68611, 0, 0, 0.83055],\n \"68\": [0, 0.68611, 0, 0, 0.88194],\n \"69\": [0, 0.68611, 0, 0, 0.75555],\n \"70\": [0, 0.68611, 0, 0, 0.72361],\n \"71\": [0, 0.68611, 0, 0, 0.90416],\n \"72\": [0, 0.68611, 0, 0, 0.9],\n \"73\": [0, 0.68611, 0, 0, 0.43611],\n \"74\": [0, 0.68611, 0, 0, 0.59444],\n \"75\": [0, 0.68611, 0, 0, 0.90138],\n \"76\": [0, 0.68611, 0, 0, 0.69166],\n \"77\": [0, 0.68611, 0, 0, 1.09166],\n \"78\": [0, 0.68611, 0, 0, 0.9],\n \"79\": [0, 0.68611, 0, 0, 0.86388],\n \"80\": [0, 0.68611, 0, 0, 0.78611],\n \"81\": [0.19444, 0.68611, 0, 0, 0.86388],\n \"82\": [0, 0.68611, 0, 0, 0.8625],\n \"83\": [0, 0.68611, 0, 0, 0.63889],\n \"84\": [0, 0.68611, 0, 0, 0.8],\n \"85\": [0, 0.68611, 0, 0, 0.88472],\n \"86\": [0, 0.68611, 0.01597, 0, 0.86944],\n \"87\": [0, 0.68611, 0.01597, 0, 1.18888],\n \"88\": [0, 0.68611, 0, 0, 0.86944],\n \"89\": [0, 0.68611, 0.02875, 0, 0.86944],\n \"90\": [0, 0.68611, 0, 0, 0.70277],\n \"91\": [0.25, 0.75, 0, 0, 0.31944],\n \"92\": [0.25, 0.75, 0, 0, 0.575],\n \"93\": [0.25, 0.75, 0, 0, 0.31944],\n \"94\": [0, 0.69444, 0, 0, 0.575],\n \"95\": [0.31, 0.13444, 0.03194, 0, 0.575],\n \"97\": [0, 0.44444, 0, 0, 0.55902],\n \"98\": [0, 0.69444, 0, 0, 0.63889],\n \"99\": [0, 0.44444, 0, 0, 0.51111],\n \"100\": [0, 0.69444, 0, 0, 0.63889],\n \"101\": [0, 0.44444, 0, 0, 0.52708],\n \"102\": [0, 0.69444, 0.10903, 0, 0.35139],\n \"103\": [0.19444, 0.44444, 0.01597, 0, 0.575],\n \"104\": [0, 0.69444, 0, 0, 0.63889],\n \"105\": [0, 0.69444, 0, 0, 0.31944],\n \"106\": [0.19444, 0.69444, 0, 0, 0.35139],\n \"107\": [0, 0.69444, 0, 0, 0.60694],\n \"108\": [0, 0.69444, 0, 0, 0.31944],\n \"109\": [0, 0.44444, 0, 0, 0.95833],\n \"110\": [0, 0.44444, 0, 0, 0.63889],\n \"111\": [0, 0.44444, 0, 0, 0.575],\n \"112\": [0.19444, 0.44444, 0, 0, 0.63889],\n \"113\": [0.19444, 0.44444, 0, 0, 0.60694],\n \"114\": [0, 0.44444, 0, 0, 0.47361],\n \"115\": [0, 0.44444, 0, 0, 0.45361],\n \"116\": [0, 0.63492, 0, 0, 0.44722],\n \"117\": [0, 0.44444, 0, 0, 0.63889],\n \"118\": [0, 0.44444, 0.01597, 0, 0.60694],\n \"119\": [0, 0.44444, 0.01597, 0, 0.83055],\n \"120\": [0, 0.44444, 0, 0, 0.60694],\n \"121\": [0.19444, 0.44444, 0.01597, 0, 0.60694],\n \"122\": [0, 0.44444, 0, 0, 0.51111],\n \"123\": [0.25, 0.75, 0, 0, 0.575],\n \"124\": [0.25, 0.75, 0, 0, 0.31944],\n \"125\": [0.25, 0.75, 0, 0, 0.575],\n \"126\": [0.35, 0.34444, 0, 0, 0.575],\n \"160\": [0, 0, 0, 0, 0.25],\n \"163\": [0, 0.69444, 0, 0, 0.86853],\n \"168\": [0, 0.69444, 0, 0, 0.575],\n \"172\": [0, 0.44444, 0, 0, 0.76666],\n \"176\": [0, 0.69444, 0, 0, 0.86944],\n \"177\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"184\": [0.17014, 0, 0, 0, 0.51111],\n \"198\": [0, 0.68611, 0, 0, 1.04166],\n \"215\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"216\": [0.04861, 0.73472, 0, 0, 0.89444],\n \"223\": [0, 0.69444, 0, 0, 0.59722],\n \"230\": [0, 0.44444, 0, 0, 0.83055],\n \"247\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"248\": [0.09722, 0.54167, 0, 0, 0.575],\n \"305\": [0, 0.44444, 0, 0, 0.31944],\n \"338\": [0, 0.68611, 0, 0, 1.16944],\n \"339\": [0, 0.44444, 0, 0, 0.89444],\n \"567\": [0.19444, 0.44444, 0, 0, 0.35139],\n \"710\": [0, 0.69444, 0, 0, 0.575],\n \"711\": [0, 0.63194, 0, 0, 0.575],\n \"713\": [0, 0.59611, 0, 0, 0.575],\n \"714\": [0, 0.69444, 0, 0, 0.575],\n \"715\": [0, 0.69444, 0, 0, 0.575],\n \"728\": [0, 0.69444, 0, 0, 0.575],\n \"729\": [0, 0.69444, 0, 0, 0.31944],\n \"730\": [0, 0.69444, 0, 0, 0.86944],\n \"732\": [0, 0.69444, 0, 0, 0.575],\n \"733\": [0, 0.69444, 0, 0, 0.575],\n \"915\": [0, 0.68611, 0, 0, 0.69166],\n \"916\": [0, 0.68611, 0, 0, 0.95833],\n \"920\": [0, 0.68611, 0, 0, 0.89444],\n \"923\": [0, 0.68611, 0, 0, 0.80555],\n \"926\": [0, 0.68611, 0, 0, 0.76666],\n \"928\": [0, 0.68611, 0, 0, 0.9],\n \"931\": [0, 0.68611, 0, 0, 0.83055],\n \"933\": [0, 0.68611, 0, 0, 0.89444],\n \"934\": [0, 0.68611, 0, 0, 0.83055],\n \"936\": [0, 0.68611, 0, 0, 0.89444],\n \"937\": [0, 0.68611, 0, 0, 0.83055],\n \"8211\": [0, 0.44444, 0.03194, 0, 0.575],\n \"8212\": [0, 0.44444, 0.03194, 0, 1.14999],\n \"8216\": [0, 0.69444, 0, 0, 0.31944],\n \"8217\": [0, 0.69444, 0, 0, 0.31944],\n \"8220\": [0, 0.69444, 0, 0, 0.60278],\n \"8221\": [0, 0.69444, 0, 0, 0.60278],\n \"8224\": [0.19444, 0.69444, 0, 0, 0.51111],\n \"8225\": [0.19444, 0.69444, 0, 0, 0.51111],\n \"8242\": [0, 0.55556, 0, 0, 0.34444],\n \"8407\": [0, 0.72444, 0.15486, 0, 0.575],\n \"8463\": [0, 0.69444, 0, 0, 0.66759],\n \"8465\": [0, 0.69444, 0, 0, 0.83055],\n \"8467\": [0, 0.69444, 0, 0, 0.47361],\n \"8472\": [0.19444, 0.44444, 0, 0, 0.74027],\n \"8476\": [0, 0.69444, 0, 0, 0.83055],\n \"8501\": [0, 0.69444, 0, 0, 0.70277],\n \"8592\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8593\": [0.19444, 0.69444, 0, 0, 0.575],\n \"8594\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8595\": [0.19444, 0.69444, 0, 0, 0.575],\n \"8596\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8597\": [0.25, 0.75, 0, 0, 0.575],\n \"8598\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8599\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8600\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8601\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8636\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8637\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8640\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8641\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8656\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8657\": [0.19444, 0.69444, 0, 0, 0.70277],\n \"8658\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8659\": [0.19444, 0.69444, 0, 0, 0.70277],\n \"8660\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8661\": [0.25, 0.75, 0, 0, 0.70277],\n \"8704\": [0, 0.69444, 0, 0, 0.63889],\n \"8706\": [0, 0.69444, 0.06389, 0, 0.62847],\n \"8707\": [0, 0.69444, 0, 0, 0.63889],\n \"8709\": [0.05556, 0.75, 0, 0, 0.575],\n \"8711\": [0, 0.68611, 0, 0, 0.95833],\n \"8712\": [0.08556, 0.58556, 0, 0, 0.76666],\n \"8715\": [0.08556, 0.58556, 0, 0, 0.76666],\n \"8722\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8723\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8725\": [0.25, 0.75, 0, 0, 0.575],\n \"8726\": [0.25, 0.75, 0, 0, 0.575],\n \"8727\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"8728\": [-0.02639, 0.47361, 0, 0, 0.575],\n \"8729\": [-0.02639, 0.47361, 0, 0, 0.575],\n \"8730\": [0.18, 0.82, 0, 0, 0.95833],\n \"8733\": [0, 0.44444, 0, 0, 0.89444],\n \"8734\": [0, 0.44444, 0, 0, 1.14999],\n \"8736\": [0, 0.69224, 0, 0, 0.72222],\n \"8739\": [0.25, 0.75, 0, 0, 0.31944],\n \"8741\": [0.25, 0.75, 0, 0, 0.575],\n \"8743\": [0, 0.55556, 0, 0, 0.76666],\n \"8744\": [0, 0.55556, 0, 0, 0.76666],\n \"8745\": [0, 0.55556, 0, 0, 0.76666],\n \"8746\": [0, 0.55556, 0, 0, 0.76666],\n \"8747\": [0.19444, 0.69444, 0.12778, 0, 0.56875],\n \"8764\": [-0.10889, 0.39111, 0, 0, 0.89444],\n \"8768\": [0.19444, 0.69444, 0, 0, 0.31944],\n \"8771\": [0.00222, 0.50222, 0, 0, 0.89444],\n \"8773\": [0.027, 0.638, 0, 0, 0.894],\n \"8776\": [0.02444, 0.52444, 0, 0, 0.89444],\n \"8781\": [0.00222, 0.50222, 0, 0, 0.89444],\n \"8801\": [0.00222, 0.50222, 0, 0, 0.89444],\n \"8804\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8805\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8810\": [0.08556, 0.58556, 0, 0, 1.14999],\n \"8811\": [0.08556, 0.58556, 0, 0, 1.14999],\n \"8826\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8827\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8834\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8835\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8838\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8839\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8846\": [0, 0.55556, 0, 0, 0.76666],\n \"8849\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8850\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8851\": [0, 0.55556, 0, 0, 0.76666],\n \"8852\": [0, 0.55556, 0, 0, 0.76666],\n \"8853\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8854\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8855\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8856\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8857\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8866\": [0, 0.69444, 0, 0, 0.70277],\n \"8867\": [0, 0.69444, 0, 0, 0.70277],\n \"8868\": [0, 0.69444, 0, 0, 0.89444],\n \"8869\": [0, 0.69444, 0, 0, 0.89444],\n \"8900\": [-0.02639, 0.47361, 0, 0, 0.575],\n \"8901\": [-0.02639, 0.47361, 0, 0, 0.31944],\n \"8902\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"8968\": [0.25, 0.75, 0, 0, 0.51111],\n \"8969\": [0.25, 0.75, 0, 0, 0.51111],\n \"8970\": [0.25, 0.75, 0, 0, 0.51111],\n \"8971\": [0.25, 0.75, 0, 0, 0.51111],\n \"8994\": [-0.13889, 0.36111, 0, 0, 1.14999],\n \"8995\": [-0.13889, 0.36111, 0, 0, 1.14999],\n \"9651\": [0.19444, 0.69444, 0, 0, 1.02222],\n \"9657\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"9661\": [0.19444, 0.69444, 0, 0, 1.02222],\n \"9667\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"9711\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"9824\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9825\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9826\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9827\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9837\": [0, 0.75, 0, 0, 0.44722],\n \"9838\": [0.19444, 0.69444, 0, 0, 0.44722],\n \"9839\": [0.19444, 0.69444, 0, 0, 0.44722],\n \"10216\": [0.25, 0.75, 0, 0, 0.44722],\n \"10217\": [0.25, 0.75, 0, 0, 0.44722],\n \"10815\": [0, 0.68611, 0, 0, 0.9],\n \"10927\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"10928\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"57376\": [0.19444, 0.69444, 0, 0, 0]\n },\n \"Main-BoldItalic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0.11417, 0, 0.38611],\n \"34\": [0, 0.69444, 0.07939, 0, 0.62055],\n \"35\": [0.19444, 0.69444, 0.06833, 0, 0.94444],\n \"37\": [0.05556, 0.75, 0.12861, 0, 0.94444],\n \"38\": [0, 0.69444, 0.08528, 0, 0.88555],\n \"39\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"40\": [0.25, 0.75, 0.15806, 0, 0.47333],\n \"41\": [0.25, 0.75, 0.03306, 0, 0.47333],\n \"42\": [0, 0.75, 0.14333, 0, 0.59111],\n \"43\": [0.10333, 0.60333, 0.03306, 0, 0.88555],\n \"44\": [0.19444, 0.14722, 0, 0, 0.35555],\n \"45\": [0, 0.44444, 0.02611, 0, 0.41444],\n \"46\": [0, 0.14722, 0, 0, 0.35555],\n \"47\": [0.25, 0.75, 0.15806, 0, 0.59111],\n \"48\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"49\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"50\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"51\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"52\": [0.19444, 0.64444, 0.13167, 0, 0.59111],\n \"53\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"54\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"55\": [0.19444, 0.64444, 0.13167, 0, 0.59111],\n \"56\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"57\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"58\": [0, 0.44444, 0.06695, 0, 0.35555],\n \"59\": [0.19444, 0.44444, 0.06695, 0, 0.35555],\n \"61\": [-0.10889, 0.39111, 0.06833, 0, 0.88555],\n \"63\": [0, 0.69444, 0.11472, 0, 0.59111],\n \"64\": [0, 0.69444, 0.09208, 0, 0.88555],\n \"65\": [0, 0.68611, 0, 0, 0.86555],\n \"66\": [0, 0.68611, 0.0992, 0, 0.81666],\n \"67\": [0, 0.68611, 0.14208, 0, 0.82666],\n \"68\": [0, 0.68611, 0.09062, 0, 0.87555],\n \"69\": [0, 0.68611, 0.11431, 0, 0.75666],\n \"70\": [0, 0.68611, 0.12903, 0, 0.72722],\n \"71\": [0, 0.68611, 0.07347, 0, 0.89527],\n \"72\": [0, 0.68611, 0.17208, 0, 0.8961],\n \"73\": [0, 0.68611, 0.15681, 0, 0.47166],\n \"74\": [0, 0.68611, 0.145, 0, 0.61055],\n \"75\": [0, 0.68611, 0.14208, 0, 0.89499],\n \"76\": [0, 0.68611, 0, 0, 0.69777],\n \"77\": [0, 0.68611, 0.17208, 0, 1.07277],\n \"78\": [0, 0.68611, 0.17208, 0, 0.8961],\n \"79\": [0, 0.68611, 0.09062, 0, 0.85499],\n \"80\": [0, 0.68611, 0.0992, 0, 0.78721],\n \"81\": [0.19444, 0.68611, 0.09062, 0, 0.85499],\n \"82\": [0, 0.68611, 0.02559, 0, 0.85944],\n \"83\": [0, 0.68611, 0.11264, 0, 0.64999],\n \"84\": [0, 0.68611, 0.12903, 0, 0.7961],\n \"85\": [0, 0.68611, 0.17208, 0, 0.88083],\n \"86\": [0, 0.68611, 0.18625, 0, 0.86555],\n \"87\": [0, 0.68611, 0.18625, 0, 1.15999],\n \"88\": [0, 0.68611, 0.15681, 0, 0.86555],\n \"89\": [0, 0.68611, 0.19803, 0, 0.86555],\n \"90\": [0, 0.68611, 0.14208, 0, 0.70888],\n \"91\": [0.25, 0.75, 0.1875, 0, 0.35611],\n \"93\": [0.25, 0.75, 0.09972, 0, 0.35611],\n \"94\": [0, 0.69444, 0.06709, 0, 0.59111],\n \"95\": [0.31, 0.13444, 0.09811, 0, 0.59111],\n \"97\": [0, 0.44444, 0.09426, 0, 0.59111],\n \"98\": [0, 0.69444, 0.07861, 0, 0.53222],\n \"99\": [0, 0.44444, 0.05222, 0, 0.53222],\n \"100\": [0, 0.69444, 0.10861, 0, 0.59111],\n \"101\": [0, 0.44444, 0.085, 0, 0.53222],\n \"102\": [0.19444, 0.69444, 0.21778, 0, 0.4],\n \"103\": [0.19444, 0.44444, 0.105, 0, 0.53222],\n \"104\": [0, 0.69444, 0.09426, 0, 0.59111],\n \"105\": [0, 0.69326, 0.11387, 0, 0.35555],\n \"106\": [0.19444, 0.69326, 0.1672, 0, 0.35555],\n \"107\": [0, 0.69444, 0.11111, 0, 0.53222],\n \"108\": [0, 0.69444, 0.10861, 0, 0.29666],\n \"109\": [0, 0.44444, 0.09426, 0, 0.94444],\n \"110\": [0, 0.44444, 0.09426, 0, 0.64999],\n \"111\": [0, 0.44444, 0.07861, 0, 0.59111],\n \"112\": [0.19444, 0.44444, 0.07861, 0, 0.59111],\n \"113\": [0.19444, 0.44444, 0.105, 0, 0.53222],\n \"114\": [0, 0.44444, 0.11111, 0, 0.50167],\n \"115\": [0, 0.44444, 0.08167, 0, 0.48694],\n \"116\": [0, 0.63492, 0.09639, 0, 0.385],\n \"117\": [0, 0.44444, 0.09426, 0, 0.62055],\n \"118\": [0, 0.44444, 0.11111, 0, 0.53222],\n \"119\": [0, 0.44444, 0.11111, 0, 0.76777],\n \"120\": [0, 0.44444, 0.12583, 0, 0.56055],\n \"121\": [0.19444, 0.44444, 0.105, 0, 0.56166],\n \"122\": [0, 0.44444, 0.13889, 0, 0.49055],\n \"126\": [0.35, 0.34444, 0.11472, 0, 0.59111],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.69444, 0.11473, 0, 0.59111],\n \"176\": [0, 0.69444, 0, 0, 0.94888],\n \"184\": [0.17014, 0, 0, 0, 0.53222],\n \"198\": [0, 0.68611, 0.11431, 0, 1.02277],\n \"216\": [0.04861, 0.73472, 0.09062, 0, 0.88555],\n \"223\": [0.19444, 0.69444, 0.09736, 0, 0.665],\n \"230\": [0, 0.44444, 0.085, 0, 0.82666],\n \"248\": [0.09722, 0.54167, 0.09458, 0, 0.59111],\n \"305\": [0, 0.44444, 0.09426, 0, 0.35555],\n \"338\": [0, 0.68611, 0.11431, 0, 1.14054],\n \"339\": [0, 0.44444, 0.085, 0, 0.82666],\n \"567\": [0.19444, 0.44444, 0.04611, 0, 0.385],\n \"710\": [0, 0.69444, 0.06709, 0, 0.59111],\n \"711\": [0, 0.63194, 0.08271, 0, 0.59111],\n \"713\": [0, 0.59444, 0.10444, 0, 0.59111],\n \"714\": [0, 0.69444, 0.08528, 0, 0.59111],\n \"715\": [0, 0.69444, 0, 0, 0.59111],\n \"728\": [0, 0.69444, 0.10333, 0, 0.59111],\n \"729\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"730\": [0, 0.69444, 0, 0, 0.94888],\n \"732\": [0, 0.69444, 0.11472, 0, 0.59111],\n \"733\": [0, 0.69444, 0.11472, 0, 0.59111],\n \"915\": [0, 0.68611, 0.12903, 0, 0.69777],\n \"916\": [0, 0.68611, 0, 0, 0.94444],\n \"920\": [0, 0.68611, 0.09062, 0, 0.88555],\n \"923\": [0, 0.68611, 0, 0, 0.80666],\n \"926\": [0, 0.68611, 0.15092, 0, 0.76777],\n \"928\": [0, 0.68611, 0.17208, 0, 0.8961],\n \"931\": [0, 0.68611, 0.11431, 0, 0.82666],\n \"933\": [0, 0.68611, 0.10778, 0, 0.88555],\n \"934\": [0, 0.68611, 0.05632, 0, 0.82666],\n \"936\": [0, 0.68611, 0.10778, 0, 0.88555],\n \"937\": [0, 0.68611, 0.0992, 0, 0.82666],\n \"8211\": [0, 0.44444, 0.09811, 0, 0.59111],\n \"8212\": [0, 0.44444, 0.09811, 0, 1.18221],\n \"8216\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"8217\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"8220\": [0, 0.69444, 0.16772, 0, 0.62055],\n \"8221\": [0, 0.69444, 0.07939, 0, 0.62055]\n },\n \"Main-Italic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"34\": [0, 0.69444, 0.06961, 0, 0.51444],\n \"35\": [0.19444, 0.69444, 0.06616, 0, 0.81777],\n \"37\": [0.05556, 0.75, 0.13639, 0, 0.81777],\n \"38\": [0, 0.69444, 0.09694, 0, 0.76666],\n \"39\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"40\": [0.25, 0.75, 0.16194, 0, 0.40889],\n \"41\": [0.25, 0.75, 0.03694, 0, 0.40889],\n \"42\": [0, 0.75, 0.14917, 0, 0.51111],\n \"43\": [0.05667, 0.56167, 0.03694, 0, 0.76666],\n \"44\": [0.19444, 0.10556, 0, 0, 0.30667],\n \"45\": [0, 0.43056, 0.02826, 0, 0.35778],\n \"46\": [0, 0.10556, 0, 0, 0.30667],\n \"47\": [0.25, 0.75, 0.16194, 0, 0.51111],\n \"48\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"49\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"50\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"51\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"52\": [0.19444, 0.64444, 0.13556, 0, 0.51111],\n \"53\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"54\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"55\": [0.19444, 0.64444, 0.13556, 0, 0.51111],\n \"56\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"57\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"58\": [0, 0.43056, 0.0582, 0, 0.30667],\n \"59\": [0.19444, 0.43056, 0.0582, 0, 0.30667],\n \"61\": [-0.13313, 0.36687, 0.06616, 0, 0.76666],\n \"63\": [0, 0.69444, 0.1225, 0, 0.51111],\n \"64\": [0, 0.69444, 0.09597, 0, 0.76666],\n \"65\": [0, 0.68333, 0, 0, 0.74333],\n \"66\": [0, 0.68333, 0.10257, 0, 0.70389],\n \"67\": [0, 0.68333, 0.14528, 0, 0.71555],\n \"68\": [0, 0.68333, 0.09403, 0, 0.755],\n \"69\": [0, 0.68333, 0.12028, 0, 0.67833],\n \"70\": [0, 0.68333, 0.13305, 0, 0.65277],\n \"71\": [0, 0.68333, 0.08722, 0, 0.77361],\n \"72\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"73\": [0, 0.68333, 0.15806, 0, 0.38555],\n \"74\": [0, 0.68333, 0.14028, 0, 0.525],\n \"75\": [0, 0.68333, 0.14528, 0, 0.76888],\n \"76\": [0, 0.68333, 0, 0, 0.62722],\n \"77\": [0, 0.68333, 0.16389, 0, 0.89666],\n \"78\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"79\": [0, 0.68333, 0.09403, 0, 0.76666],\n \"80\": [0, 0.68333, 0.10257, 0, 0.67833],\n \"81\": [0.19444, 0.68333, 0.09403, 0, 0.76666],\n \"82\": [0, 0.68333, 0.03868, 0, 0.72944],\n \"83\": [0, 0.68333, 0.11972, 0, 0.56222],\n \"84\": [0, 0.68333, 0.13305, 0, 0.71555],\n \"85\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"86\": [0, 0.68333, 0.18361, 0, 0.74333],\n \"87\": [0, 0.68333, 0.18361, 0, 0.99888],\n \"88\": [0, 0.68333, 0.15806, 0, 0.74333],\n \"89\": [0, 0.68333, 0.19383, 0, 0.74333],\n \"90\": [0, 0.68333, 0.14528, 0, 0.61333],\n \"91\": [0.25, 0.75, 0.1875, 0, 0.30667],\n \"93\": [0.25, 0.75, 0.10528, 0, 0.30667],\n \"94\": [0, 0.69444, 0.06646, 0, 0.51111],\n \"95\": [0.31, 0.12056, 0.09208, 0, 0.51111],\n \"97\": [0, 0.43056, 0.07671, 0, 0.51111],\n \"98\": [0, 0.69444, 0.06312, 0, 0.46],\n \"99\": [0, 0.43056, 0.05653, 0, 0.46],\n \"100\": [0, 0.69444, 0.10333, 0, 0.51111],\n \"101\": [0, 0.43056, 0.07514, 0, 0.46],\n \"102\": [0.19444, 0.69444, 0.21194, 0, 0.30667],\n \"103\": [0.19444, 0.43056, 0.08847, 0, 0.46],\n \"104\": [0, 0.69444, 0.07671, 0, 0.51111],\n \"105\": [0, 0.65536, 0.1019, 0, 0.30667],\n \"106\": [0.19444, 0.65536, 0.14467, 0, 0.30667],\n \"107\": [0, 0.69444, 0.10764, 0, 0.46],\n \"108\": [0, 0.69444, 0.10333, 0, 0.25555],\n \"109\": [0, 0.43056, 0.07671, 0, 0.81777],\n \"110\": [0, 0.43056, 0.07671, 0, 0.56222],\n \"111\": [0, 0.43056, 0.06312, 0, 0.51111],\n \"112\": [0.19444, 0.43056, 0.06312, 0, 0.51111],\n \"113\": [0.19444, 0.43056, 0.08847, 0, 0.46],\n \"114\": [0, 0.43056, 0.10764, 0, 0.42166],\n \"115\": [0, 0.43056, 0.08208, 0, 0.40889],\n \"116\": [0, 0.61508, 0.09486, 0, 0.33222],\n \"117\": [0, 0.43056, 0.07671, 0, 0.53666],\n \"118\": [0, 0.43056, 0.10764, 0, 0.46],\n \"119\": [0, 0.43056, 0.10764, 0, 0.66444],\n \"120\": [0, 0.43056, 0.12042, 0, 0.46389],\n \"121\": [0.19444, 0.43056, 0.08847, 0, 0.48555],\n \"122\": [0, 0.43056, 0.12292, 0, 0.40889],\n \"126\": [0.35, 0.31786, 0.11585, 0, 0.51111],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.66786, 0.10474, 0, 0.51111],\n \"176\": [0, 0.69444, 0, 0, 0.83129],\n \"184\": [0.17014, 0, 0, 0, 0.46],\n \"198\": [0, 0.68333, 0.12028, 0, 0.88277],\n \"216\": [0.04861, 0.73194, 0.09403, 0, 0.76666],\n \"223\": [0.19444, 0.69444, 0.10514, 0, 0.53666],\n \"230\": [0, 0.43056, 0.07514, 0, 0.71555],\n \"248\": [0.09722, 0.52778, 0.09194, 0, 0.51111],\n \"338\": [0, 0.68333, 0.12028, 0, 0.98499],\n \"339\": [0, 0.43056, 0.07514, 0, 0.71555],\n \"710\": [0, 0.69444, 0.06646, 0, 0.51111],\n \"711\": [0, 0.62847, 0.08295, 0, 0.51111],\n \"713\": [0, 0.56167, 0.10333, 0, 0.51111],\n \"714\": [0, 0.69444, 0.09694, 0, 0.51111],\n \"715\": [0, 0.69444, 0, 0, 0.51111],\n \"728\": [0, 0.69444, 0.10806, 0, 0.51111],\n \"729\": [0, 0.66786, 0.11752, 0, 0.30667],\n \"730\": [0, 0.69444, 0, 0, 0.83129],\n \"732\": [0, 0.66786, 0.11585, 0, 0.51111],\n \"733\": [0, 0.69444, 0.1225, 0, 0.51111],\n \"915\": [0, 0.68333, 0.13305, 0, 0.62722],\n \"916\": [0, 0.68333, 0, 0, 0.81777],\n \"920\": [0, 0.68333, 0.09403, 0, 0.76666],\n \"923\": [0, 0.68333, 0, 0, 0.69222],\n \"926\": [0, 0.68333, 0.15294, 0, 0.66444],\n \"928\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"931\": [0, 0.68333, 0.12028, 0, 0.71555],\n \"933\": [0, 0.68333, 0.11111, 0, 0.76666],\n \"934\": [0, 0.68333, 0.05986, 0, 0.71555],\n \"936\": [0, 0.68333, 0.11111, 0, 0.76666],\n \"937\": [0, 0.68333, 0.10257, 0, 0.71555],\n \"8211\": [0, 0.43056, 0.09208, 0, 0.51111],\n \"8212\": [0, 0.43056, 0.09208, 0, 1.02222],\n \"8216\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"8217\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"8220\": [0, 0.69444, 0.1685, 0, 0.51444],\n \"8221\": [0, 0.69444, 0.06961, 0, 0.51444],\n \"8463\": [0, 0.68889, 0, 0, 0.54028]\n },\n \"Main-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.27778],\n \"34\": [0, 0.69444, 0, 0, 0.5],\n \"35\": [0.19444, 0.69444, 0, 0, 0.83334],\n \"36\": [0.05556, 0.75, 0, 0, 0.5],\n \"37\": [0.05556, 0.75, 0, 0, 0.83334],\n \"38\": [0, 0.69444, 0, 0, 0.77778],\n \"39\": [0, 0.69444, 0, 0, 0.27778],\n \"40\": [0.25, 0.75, 0, 0, 0.38889],\n \"41\": [0.25, 0.75, 0, 0, 0.38889],\n \"42\": [0, 0.75, 0, 0, 0.5],\n \"43\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"44\": [0.19444, 0.10556, 0, 0, 0.27778],\n \"45\": [0, 0.43056, 0, 0, 0.33333],\n \"46\": [0, 0.10556, 0, 0, 0.27778],\n \"47\": [0.25, 0.75, 0, 0, 0.5],\n \"48\": [0, 0.64444, 0, 0, 0.5],\n \"49\": [0, 0.64444, 0, 0, 0.5],\n \"50\": [0, 0.64444, 0, 0, 0.5],\n \"51\": [0, 0.64444, 0, 0, 0.5],\n \"52\": [0, 0.64444, 0, 0, 0.5],\n \"53\": [0, 0.64444, 0, 0, 0.5],\n \"54\": [0, 0.64444, 0, 0, 0.5],\n \"55\": [0, 0.64444, 0, 0, 0.5],\n \"56\": [0, 0.64444, 0, 0, 0.5],\n \"57\": [0, 0.64444, 0, 0, 0.5],\n \"58\": [0, 0.43056, 0, 0, 0.27778],\n \"59\": [0.19444, 0.43056, 0, 0, 0.27778],\n \"60\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"61\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"62\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"63\": [0, 0.69444, 0, 0, 0.47222],\n \"64\": [0, 0.69444, 0, 0, 0.77778],\n \"65\": [0, 0.68333, 0, 0, 0.75],\n \"66\": [0, 0.68333, 0, 0, 0.70834],\n \"67\": [0, 0.68333, 0, 0, 0.72222],\n \"68\": [0, 0.68333, 0, 0, 0.76389],\n \"69\": [0, 0.68333, 0, 0, 0.68056],\n \"70\": [0, 0.68333, 0, 0, 0.65278],\n \"71\": [0, 0.68333, 0, 0, 0.78472],\n \"72\": [0, 0.68333, 0, 0, 0.75],\n \"73\": [0, 0.68333, 0, 0, 0.36111],\n \"74\": [0, 0.68333, 0, 0, 0.51389],\n \"75\": [0, 0.68333, 0, 0, 0.77778],\n \"76\": [0, 0.68333, 0, 0, 0.625],\n \"77\": [0, 0.68333, 0, 0, 0.91667],\n \"78\": [0, 0.68333, 0, 0, 0.75],\n \"79\": [0, 0.68333, 0, 0, 0.77778],\n \"80\": [0, 0.68333, 0, 0, 0.68056],\n \"81\": [0.19444, 0.68333, 0, 0, 0.77778],\n \"82\": [0, 0.68333, 0, 0, 0.73611],\n \"83\": [0, 0.68333, 0, 0, 0.55556],\n \"84\": [0, 0.68333, 0, 0, 0.72222],\n \"85\": [0, 0.68333, 0, 0, 0.75],\n \"86\": [0, 0.68333, 0.01389, 0, 0.75],\n \"87\": [0, 0.68333, 0.01389, 0, 1.02778],\n \"88\": [0, 0.68333, 0, 0, 0.75],\n \"89\": [0, 0.68333, 0.025, 0, 0.75],\n \"90\": [0, 0.68333, 0, 0, 0.61111],\n \"91\": [0.25, 0.75, 0, 0, 0.27778],\n \"92\": [0.25, 0.75, 0, 0, 0.5],\n \"93\": [0.25, 0.75, 0, 0, 0.27778],\n \"94\": [0, 0.69444, 0, 0, 0.5],\n \"95\": [0.31, 0.12056, 0.02778, 0, 0.5],\n \"97\": [0, 0.43056, 0, 0, 0.5],\n \"98\": [0, 0.69444, 0, 0, 0.55556],\n \"99\": [0, 0.43056, 0, 0, 0.44445],\n \"100\": [0, 0.69444, 0, 0, 0.55556],\n \"101\": [0, 0.43056, 0, 0, 0.44445],\n \"102\": [0, 0.69444, 0.07778, 0, 0.30556],\n \"103\": [0.19444, 0.43056, 0.01389, 0, 0.5],\n \"104\": [0, 0.69444, 0, 0, 0.55556],\n \"105\": [0, 0.66786, 0, 0, 0.27778],\n \"106\": [0.19444, 0.66786, 0, 0, 0.30556],\n \"107\": [0, 0.69444, 0, 0, 0.52778],\n \"108\": [0, 0.69444, 0, 0, 0.27778],\n \"109\": [0, 0.43056, 0, 0, 0.83334],\n \"110\": [0, 0.43056, 0, 0, 0.55556],\n \"111\": [0, 0.43056, 0, 0, 0.5],\n \"112\": [0.19444, 0.43056, 0, 0, 0.55556],\n \"113\": [0.19444, 0.43056, 0, 0, 0.52778],\n \"114\": [0, 0.43056, 0, 0, 0.39167],\n \"115\": [0, 0.43056, 0, 0, 0.39445],\n \"116\": [0, 0.61508, 0, 0, 0.38889],\n \"117\": [0, 0.43056, 0, 0, 0.55556],\n \"118\": [0, 0.43056, 0.01389, 0, 0.52778],\n \"119\": [0, 0.43056, 0.01389, 0, 0.72222],\n \"120\": [0, 0.43056, 0, 0, 0.52778],\n \"121\": [0.19444, 0.43056, 0.01389, 0, 0.52778],\n \"122\": [0, 0.43056, 0, 0, 0.44445],\n \"123\": [0.25, 0.75, 0, 0, 0.5],\n \"124\": [0.25, 0.75, 0, 0, 0.27778],\n \"125\": [0.25, 0.75, 0, 0, 0.5],\n \"126\": [0.35, 0.31786, 0, 0, 0.5],\n \"160\": [0, 0, 0, 0, 0.25],\n \"163\": [0, 0.69444, 0, 0, 0.76909],\n \"167\": [0.19444, 0.69444, 0, 0, 0.44445],\n \"168\": [0, 0.66786, 0, 0, 0.5],\n \"172\": [0, 0.43056, 0, 0, 0.66667],\n \"176\": [0, 0.69444, 0, 0, 0.75],\n \"177\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"182\": [0.19444, 0.69444, 0, 0, 0.61111],\n \"184\": [0.17014, 0, 0, 0, 0.44445],\n \"198\": [0, 0.68333, 0, 0, 0.90278],\n \"215\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"216\": [0.04861, 0.73194, 0, 0, 0.77778],\n \"223\": [0, 0.69444, 0, 0, 0.5],\n \"230\": [0, 0.43056, 0, 0, 0.72222],\n \"247\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"248\": [0.09722, 0.52778, 0, 0, 0.5],\n \"305\": [0, 0.43056, 0, 0, 0.27778],\n \"338\": [0, 0.68333, 0, 0, 1.01389],\n \"339\": [0, 0.43056, 0, 0, 0.77778],\n \"567\": [0.19444, 0.43056, 0, 0, 0.30556],\n \"710\": [0, 0.69444, 0, 0, 0.5],\n \"711\": [0, 0.62847, 0, 0, 0.5],\n \"713\": [0, 0.56778, 0, 0, 0.5],\n \"714\": [0, 0.69444, 0, 0, 0.5],\n \"715\": [0, 0.69444, 0, 0, 0.5],\n \"728\": [0, 0.69444, 0, 0, 0.5],\n \"729\": [0, 0.66786, 0, 0, 0.27778],\n \"730\": [0, 0.69444, 0, 0, 0.75],\n \"732\": [0, 0.66786, 0, 0, 0.5],\n \"733\": [0, 0.69444, 0, 0, 0.5],\n \"915\": [0, 0.68333, 0, 0, 0.625],\n \"916\": [0, 0.68333, 0, 0, 0.83334],\n \"920\": [0, 0.68333, 0, 0, 0.77778],\n \"923\": [0, 0.68333, 0, 0, 0.69445],\n \"926\": [0, 0.68333, 0, 0, 0.66667],\n \"928\": [0, 0.68333, 0, 0, 0.75],\n \"931\": [0, 0.68333, 0, 0, 0.72222],\n \"933\": [0, 0.68333, 0, 0, 0.77778],\n \"934\": [0, 0.68333, 0, 0, 0.72222],\n \"936\": [0, 0.68333, 0, 0, 0.77778],\n \"937\": [0, 0.68333, 0, 0, 0.72222],\n \"8211\": [0, 0.43056, 0.02778, 0, 0.5],\n \"8212\": [0, 0.43056, 0.02778, 0, 1.0],\n \"8216\": [0, 0.69444, 0, 0, 0.27778],\n \"8217\": [0, 0.69444, 0, 0, 0.27778],\n \"8220\": [0, 0.69444, 0, 0, 0.5],\n \"8221\": [0, 0.69444, 0, 0, 0.5],\n \"8224\": [0.19444, 0.69444, 0, 0, 0.44445],\n \"8225\": [0.19444, 0.69444, 0, 0, 0.44445],\n \"8230\": [0, 0.123, 0, 0, 1.172],\n \"8242\": [0, 0.55556, 0, 0, 0.275],\n \"8407\": [0, 0.71444, 0.15382, 0, 0.5],\n \"8463\": [0, 0.68889, 0, 0, 0.54028],\n \"8465\": [0, 0.69444, 0, 0, 0.72222],\n \"8467\": [0, 0.69444, 0, 0.11111, 0.41667],\n \"8472\": [0.19444, 0.43056, 0, 0.11111, 0.63646],\n \"8476\": [0, 0.69444, 0, 0, 0.72222],\n \"8501\": [0, 0.69444, 0, 0, 0.61111],\n \"8592\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8593\": [0.19444, 0.69444, 0, 0, 0.5],\n \"8594\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8595\": [0.19444, 0.69444, 0, 0, 0.5],\n \"8596\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8597\": [0.25, 0.75, 0, 0, 0.5],\n \"8598\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8599\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8600\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8601\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8614\": [0.011, 0.511, 0, 0, 1.0],\n \"8617\": [0.011, 0.511, 0, 0, 1.126],\n \"8618\": [0.011, 0.511, 0, 0, 1.126],\n \"8636\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8637\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8640\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8641\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8652\": [0.011, 0.671, 0, 0, 1.0],\n \"8656\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8657\": [0.19444, 0.69444, 0, 0, 0.61111],\n \"8658\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8659\": [0.19444, 0.69444, 0, 0, 0.61111],\n \"8660\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8661\": [0.25, 0.75, 0, 0, 0.61111],\n \"8704\": [0, 0.69444, 0, 0, 0.55556],\n \"8706\": [0, 0.69444, 0.05556, 0.08334, 0.5309],\n \"8707\": [0, 0.69444, 0, 0, 0.55556],\n \"8709\": [0.05556, 0.75, 0, 0, 0.5],\n \"8711\": [0, 0.68333, 0, 0, 0.83334],\n \"8712\": [0.0391, 0.5391, 0, 0, 0.66667],\n \"8715\": [0.0391, 0.5391, 0, 0, 0.66667],\n \"8722\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8723\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8725\": [0.25, 0.75, 0, 0, 0.5],\n \"8726\": [0.25, 0.75, 0, 0, 0.5],\n \"8727\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"8728\": [-0.05555, 0.44445, 0, 0, 0.5],\n \"8729\": [-0.05555, 0.44445, 0, 0, 0.5],\n \"8730\": [0.2, 0.8, 0, 0, 0.83334],\n \"8733\": [0, 0.43056, 0, 0, 0.77778],\n \"8734\": [0, 0.43056, 0, 0, 1.0],\n \"8736\": [0, 0.69224, 0, 0, 0.72222],\n \"8739\": [0.25, 0.75, 0, 0, 0.27778],\n \"8741\": [0.25, 0.75, 0, 0, 0.5],\n \"8743\": [0, 0.55556, 0, 0, 0.66667],\n \"8744\": [0, 0.55556, 0, 0, 0.66667],\n \"8745\": [0, 0.55556, 0, 0, 0.66667],\n \"8746\": [0, 0.55556, 0, 0, 0.66667],\n \"8747\": [0.19444, 0.69444, 0.11111, 0, 0.41667],\n \"8764\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"8768\": [0.19444, 0.69444, 0, 0, 0.27778],\n \"8771\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8773\": [-0.022, 0.589, 0, 0, 0.778],\n \"8776\": [-0.01688, 0.48312, 0, 0, 0.77778],\n \"8781\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8784\": [-0.133, 0.673, 0, 0, 0.778],\n \"8801\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8804\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8805\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8810\": [0.0391, 0.5391, 0, 0, 1.0],\n \"8811\": [0.0391, 0.5391, 0, 0, 1.0],\n \"8826\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8827\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8834\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8835\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8838\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8839\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8846\": [0, 0.55556, 0, 0, 0.66667],\n \"8849\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8850\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8851\": [0, 0.55556, 0, 0, 0.66667],\n \"8852\": [0, 0.55556, 0, 0, 0.66667],\n \"8853\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8854\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8855\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8856\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8857\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8866\": [0, 0.69444, 0, 0, 0.61111],\n \"8867\": [0, 0.69444, 0, 0, 0.61111],\n \"8868\": [0, 0.69444, 0, 0, 0.77778],\n \"8869\": [0, 0.69444, 0, 0, 0.77778],\n \"8872\": [0.249, 0.75, 0, 0, 0.867],\n \"8900\": [-0.05555, 0.44445, 0, 0, 0.5],\n \"8901\": [-0.05555, 0.44445, 0, 0, 0.27778],\n \"8902\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"8904\": [0.005, 0.505, 0, 0, 0.9],\n \"8942\": [0.03, 0.903, 0, 0, 0.278],\n \"8943\": [-0.19, 0.313, 0, 0, 1.172],\n \"8945\": [-0.1, 0.823, 0, 0, 1.282],\n \"8968\": [0.25, 0.75, 0, 0, 0.44445],\n \"8969\": [0.25, 0.75, 0, 0, 0.44445],\n \"8970\": [0.25, 0.75, 0, 0, 0.44445],\n \"8971\": [0.25, 0.75, 0, 0, 0.44445],\n \"8994\": [-0.14236, 0.35764, 0, 0, 1.0],\n \"8995\": [-0.14236, 0.35764, 0, 0, 1.0],\n \"9136\": [0.244, 0.744, 0, 0, 0.412],\n \"9137\": [0.244, 0.745, 0, 0, 0.412],\n \"9651\": [0.19444, 0.69444, 0, 0, 0.88889],\n \"9657\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"9661\": [0.19444, 0.69444, 0, 0, 0.88889],\n \"9667\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"9711\": [0.19444, 0.69444, 0, 0, 1.0],\n \"9824\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9825\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9826\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9827\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9837\": [0, 0.75, 0, 0, 0.38889],\n \"9838\": [0.19444, 0.69444, 0, 0, 0.38889],\n \"9839\": [0.19444, 0.69444, 0, 0, 0.38889],\n \"10216\": [0.25, 0.75, 0, 0, 0.38889],\n \"10217\": [0.25, 0.75, 0, 0, 0.38889],\n \"10222\": [0.244, 0.744, 0, 0, 0.412],\n \"10223\": [0.244, 0.745, 0, 0, 0.412],\n \"10229\": [0.011, 0.511, 0, 0, 1.609],\n \"10230\": [0.011, 0.511, 0, 0, 1.638],\n \"10231\": [0.011, 0.511, 0, 0, 1.859],\n \"10232\": [0.024, 0.525, 0, 0, 1.609],\n \"10233\": [0.024, 0.525, 0, 0, 1.638],\n \"10234\": [0.024, 0.525, 0, 0, 1.858],\n \"10236\": [0.011, 0.511, 0, 0, 1.638],\n \"10815\": [0, 0.68333, 0, 0, 0.75],\n \"10927\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"10928\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"57376\": [0.19444, 0.69444, 0, 0, 0]\n },\n \"Math-BoldItalic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"48\": [0, 0.44444, 0, 0, 0.575],\n \"49\": [0, 0.44444, 0, 0, 0.575],\n \"50\": [0, 0.44444, 0, 0, 0.575],\n \"51\": [0.19444, 0.44444, 0, 0, 0.575],\n \"52\": [0.19444, 0.44444, 0, 0, 0.575],\n \"53\": [0.19444, 0.44444, 0, 0, 0.575],\n \"54\": [0, 0.64444, 0, 0, 0.575],\n \"55\": [0.19444, 0.44444, 0, 0, 0.575],\n \"56\": [0, 0.64444, 0, 0, 0.575],\n \"57\": [0.19444, 0.44444, 0, 0, 0.575],\n \"65\": [0, 0.68611, 0, 0, 0.86944],\n \"66\": [0, 0.68611, 0.04835, 0, 0.8664],\n \"67\": [0, 0.68611, 0.06979, 0, 0.81694],\n \"68\": [0, 0.68611, 0.03194, 0, 0.93812],\n \"69\": [0, 0.68611, 0.05451, 0, 0.81007],\n \"70\": [0, 0.68611, 0.15972, 0, 0.68889],\n \"71\": [0, 0.68611, 0, 0, 0.88673],\n \"72\": [0, 0.68611, 0.08229, 0, 0.98229],\n \"73\": [0, 0.68611, 0.07778, 0, 0.51111],\n \"74\": [0, 0.68611, 0.10069, 0, 0.63125],\n \"75\": [0, 0.68611, 0.06979, 0, 0.97118],\n \"76\": [0, 0.68611, 0, 0, 0.75555],\n \"77\": [0, 0.68611, 0.11424, 0, 1.14201],\n \"78\": [0, 0.68611, 0.11424, 0, 0.95034],\n \"79\": [0, 0.68611, 0.03194, 0, 0.83666],\n \"80\": [0, 0.68611, 0.15972, 0, 0.72309],\n \"81\": [0.19444, 0.68611, 0, 0, 0.86861],\n \"82\": [0, 0.68611, 0.00421, 0, 0.87235],\n \"83\": [0, 0.68611, 0.05382, 0, 0.69271],\n \"84\": [0, 0.68611, 0.15972, 0, 0.63663],\n \"85\": [0, 0.68611, 0.11424, 0, 0.80027],\n \"86\": [0, 0.68611, 0.25555, 0, 0.67778],\n \"87\": [0, 0.68611, 0.15972, 0, 1.09305],\n \"88\": [0, 0.68611, 0.07778, 0, 0.94722],\n \"89\": [0, 0.68611, 0.25555, 0, 0.67458],\n \"90\": [0, 0.68611, 0.06979, 0, 0.77257],\n \"97\": [0, 0.44444, 0, 0, 0.63287],\n \"98\": [0, 0.69444, 0, 0, 0.52083],\n \"99\": [0, 0.44444, 0, 0, 0.51342],\n \"100\": [0, 0.69444, 0, 0, 0.60972],\n \"101\": [0, 0.44444, 0, 0, 0.55361],\n \"102\": [0.19444, 0.69444, 0.11042, 0, 0.56806],\n \"103\": [0.19444, 0.44444, 0.03704, 0, 0.5449],\n \"104\": [0, 0.69444, 0, 0, 0.66759],\n \"105\": [0, 0.69326, 0, 0, 0.4048],\n \"106\": [0.19444, 0.69326, 0.0622, 0, 0.47083],\n \"107\": [0, 0.69444, 0.01852, 0, 0.6037],\n \"108\": [0, 0.69444, 0.0088, 0, 0.34815],\n \"109\": [0, 0.44444, 0, 0, 1.0324],\n \"110\": [0, 0.44444, 0, 0, 0.71296],\n \"111\": [0, 0.44444, 0, 0, 0.58472],\n \"112\": [0.19444, 0.44444, 0, 0, 0.60092],\n \"113\": [0.19444, 0.44444, 0.03704, 0, 0.54213],\n \"114\": [0, 0.44444, 0.03194, 0, 0.5287],\n \"115\": [0, 0.44444, 0, 0, 0.53125],\n \"116\": [0, 0.63492, 0, 0, 0.41528],\n \"117\": [0, 0.44444, 0, 0, 0.68102],\n \"118\": [0, 0.44444, 0.03704, 0, 0.56666],\n \"119\": [0, 0.44444, 0.02778, 0, 0.83148],\n \"120\": [0, 0.44444, 0, 0, 0.65903],\n \"121\": [0.19444, 0.44444, 0.03704, 0, 0.59028],\n \"122\": [0, 0.44444, 0.04213, 0, 0.55509],\n \"160\": [0, 0, 0, 0, 0.25],\n \"915\": [0, 0.68611, 0.15972, 0, 0.65694],\n \"916\": [0, 0.68611, 0, 0, 0.95833],\n \"920\": [0, 0.68611, 0.03194, 0, 0.86722],\n \"923\": [0, 0.68611, 0, 0, 0.80555],\n \"926\": [0, 0.68611, 0.07458, 0, 0.84125],\n \"928\": [0, 0.68611, 0.08229, 0, 0.98229],\n \"931\": [0, 0.68611, 0.05451, 0, 0.88507],\n \"933\": [0, 0.68611, 0.15972, 0, 0.67083],\n \"934\": [0, 0.68611, 0, 0, 0.76666],\n \"936\": [0, 0.68611, 0.11653, 0, 0.71402],\n \"937\": [0, 0.68611, 0.04835, 0, 0.8789],\n \"945\": [0, 0.44444, 0, 0, 0.76064],\n \"946\": [0.19444, 0.69444, 0.03403, 0, 0.65972],\n \"947\": [0.19444, 0.44444, 0.06389, 0, 0.59003],\n \"948\": [0, 0.69444, 0.03819, 0, 0.52222],\n \"949\": [0, 0.44444, 0, 0, 0.52882],\n \"950\": [0.19444, 0.69444, 0.06215, 0, 0.50833],\n \"951\": [0.19444, 0.44444, 0.03704, 0, 0.6],\n \"952\": [0, 0.69444, 0.03194, 0, 0.5618],\n \"953\": [0, 0.44444, 0, 0, 0.41204],\n \"954\": [0, 0.44444, 0, 0, 0.66759],\n \"955\": [0, 0.69444, 0, 0, 0.67083],\n \"956\": [0.19444, 0.44444, 0, 0, 0.70787],\n \"957\": [0, 0.44444, 0.06898, 0, 0.57685],\n \"958\": [0.19444, 0.69444, 0.03021, 0, 0.50833],\n \"959\": [0, 0.44444, 0, 0, 0.58472],\n \"960\": [0, 0.44444, 0.03704, 0, 0.68241],\n \"961\": [0.19444, 0.44444, 0, 0, 0.6118],\n \"962\": [0.09722, 0.44444, 0.07917, 0, 0.42361],\n \"963\": [0, 0.44444, 0.03704, 0, 0.68588],\n \"964\": [0, 0.44444, 0.13472, 0, 0.52083],\n \"965\": [0, 0.44444, 0.03704, 0, 0.63055],\n \"966\": [0.19444, 0.44444, 0, 0, 0.74722],\n \"967\": [0.19444, 0.44444, 0, 0, 0.71805],\n \"968\": [0.19444, 0.69444, 0.03704, 0, 0.75833],\n \"969\": [0, 0.44444, 0.03704, 0, 0.71782],\n \"977\": [0, 0.69444, 0, 0, 0.69155],\n \"981\": [0.19444, 0.69444, 0, 0, 0.7125],\n \"982\": [0, 0.44444, 0.03194, 0, 0.975],\n \"1009\": [0.19444, 0.44444, 0, 0, 0.6118],\n \"1013\": [0, 0.44444, 0, 0, 0.48333],\n \"57649\": [0, 0.44444, 0, 0, 0.39352],\n \"57911\": [0.19444, 0.44444, 0, 0, 0.43889]\n },\n \"Math-Italic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"48\": [0, 0.43056, 0, 0, 0.5],\n \"49\": [0, 0.43056, 0, 0, 0.5],\n \"50\": [0, 0.43056, 0, 0, 0.5],\n \"51\": [0.19444, 0.43056, 0, 0, 0.5],\n \"52\": [0.19444, 0.43056, 0, 0, 0.5],\n \"53\": [0.19444, 0.43056, 0, 0, 0.5],\n \"54\": [0, 0.64444, 0, 0, 0.5],\n \"55\": [0.19444, 0.43056, 0, 0, 0.5],\n \"56\": [0, 0.64444, 0, 0, 0.5],\n \"57\": [0.19444, 0.43056, 0, 0, 0.5],\n \"65\": [0, 0.68333, 0, 0.13889, 0.75],\n \"66\": [0, 0.68333, 0.05017, 0.08334, 0.75851],\n \"67\": [0, 0.68333, 0.07153, 0.08334, 0.71472],\n \"68\": [0, 0.68333, 0.02778, 0.05556, 0.82792],\n \"69\": [0, 0.68333, 0.05764, 0.08334, 0.7382],\n \"70\": [0, 0.68333, 0.13889, 0.08334, 0.64306],\n \"71\": [0, 0.68333, 0, 0.08334, 0.78625],\n \"72\": [0, 0.68333, 0.08125, 0.05556, 0.83125],\n \"73\": [0, 0.68333, 0.07847, 0.11111, 0.43958],\n \"74\": [0, 0.68333, 0.09618, 0.16667, 0.55451],\n \"75\": [0, 0.68333, 0.07153, 0.05556, 0.84931],\n \"76\": [0, 0.68333, 0, 0.02778, 0.68056],\n \"77\": [0, 0.68333, 0.10903, 0.08334, 0.97014],\n \"78\": [0, 0.68333, 0.10903, 0.08334, 0.80347],\n \"79\": [0, 0.68333, 0.02778, 0.08334, 0.76278],\n \"80\": [0, 0.68333, 0.13889, 0.08334, 0.64201],\n \"81\": [0.19444, 0.68333, 0, 0.08334, 0.79056],\n \"82\": [0, 0.68333, 0.00773, 0.08334, 0.75929],\n \"83\": [0, 0.68333, 0.05764, 0.08334, 0.6132],\n \"84\": [0, 0.68333, 0.13889, 0.08334, 0.58438],\n \"85\": [0, 0.68333, 0.10903, 0.02778, 0.68278],\n \"86\": [0, 0.68333, 0.22222, 0, 0.58333],\n \"87\": [0, 0.68333, 0.13889, 0, 0.94445],\n \"88\": [0, 0.68333, 0.07847, 0.08334, 0.82847],\n \"89\": [0, 0.68333, 0.22222, 0, 0.58056],\n \"90\": [0, 0.68333, 0.07153, 0.08334, 0.68264],\n \"97\": [0, 0.43056, 0, 0, 0.52859],\n \"98\": [0, 0.69444, 0, 0, 0.42917],\n \"99\": [0, 0.43056, 0, 0.05556, 0.43276],\n \"100\": [0, 0.69444, 0, 0.16667, 0.52049],\n \"101\": [0, 0.43056, 0, 0.05556, 0.46563],\n \"102\": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959],\n \"103\": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697],\n \"104\": [0, 0.69444, 0, 0, 0.57616],\n \"105\": [0, 0.65952, 0, 0, 0.34451],\n \"106\": [0.19444, 0.65952, 0.05724, 0, 0.41181],\n \"107\": [0, 0.69444, 0.03148, 0, 0.5206],\n \"108\": [0, 0.69444, 0.01968, 0.08334, 0.29838],\n \"109\": [0, 0.43056, 0, 0, 0.87801],\n \"110\": [0, 0.43056, 0, 0, 0.60023],\n \"111\": [0, 0.43056, 0, 0.05556, 0.48472],\n \"112\": [0.19444, 0.43056, 0, 0.08334, 0.50313],\n \"113\": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641],\n \"114\": [0, 0.43056, 0.02778, 0.05556, 0.45116],\n \"115\": [0, 0.43056, 0, 0.05556, 0.46875],\n \"116\": [0, 0.61508, 0, 0.08334, 0.36111],\n \"117\": [0, 0.43056, 0, 0.02778, 0.57246],\n \"118\": [0, 0.43056, 0.03588, 0.02778, 0.48472],\n \"119\": [0, 0.43056, 0.02691, 0.08334, 0.71592],\n \"120\": [0, 0.43056, 0, 0.02778, 0.57153],\n \"121\": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],\n \"122\": [0, 0.43056, 0.04398, 0.05556, 0.46505],\n \"160\": [0, 0, 0, 0, 0.25],\n \"915\": [0, 0.68333, 0.13889, 0.08334, 0.61528],\n \"916\": [0, 0.68333, 0, 0.16667, 0.83334],\n \"920\": [0, 0.68333, 0.02778, 0.08334, 0.76278],\n \"923\": [0, 0.68333, 0, 0.16667, 0.69445],\n \"926\": [0, 0.68333, 0.07569, 0.08334, 0.74236],\n \"928\": [0, 0.68333, 0.08125, 0.05556, 0.83125],\n \"931\": [0, 0.68333, 0.05764, 0.08334, 0.77986],\n \"933\": [0, 0.68333, 0.13889, 0.05556, 0.58333],\n \"934\": [0, 0.68333, 0, 0.08334, 0.66667],\n \"936\": [0, 0.68333, 0.11, 0.05556, 0.61222],\n \"937\": [0, 0.68333, 0.05017, 0.08334, 0.7724],\n \"945\": [0, 0.43056, 0.0037, 0.02778, 0.6397],\n \"946\": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563],\n \"947\": [0.19444, 0.43056, 0.05556, 0, 0.51773],\n \"948\": [0, 0.69444, 0.03785, 0.05556, 0.44444],\n \"949\": [0, 0.43056, 0, 0.08334, 0.46632],\n \"950\": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375],\n \"951\": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653],\n \"952\": [0, 0.69444, 0.02778, 0.08334, 0.46944],\n \"953\": [0, 0.43056, 0, 0.05556, 0.35394],\n \"954\": [0, 0.43056, 0, 0, 0.57616],\n \"955\": [0, 0.69444, 0, 0, 0.58334],\n \"956\": [0.19444, 0.43056, 0, 0.02778, 0.60255],\n \"957\": [0, 0.43056, 0.06366, 0.02778, 0.49398],\n \"958\": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375],\n \"959\": [0, 0.43056, 0, 0.05556, 0.48472],\n \"960\": [0, 0.43056, 0.03588, 0, 0.57003],\n \"961\": [0.19444, 0.43056, 0, 0.08334, 0.51702],\n \"962\": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285],\n \"963\": [0, 0.43056, 0.03588, 0, 0.57141],\n \"964\": [0, 0.43056, 0.1132, 0.02778, 0.43715],\n \"965\": [0, 0.43056, 0.03588, 0.02778, 0.54028],\n \"966\": [0.19444, 0.43056, 0, 0.08334, 0.65417],\n \"967\": [0.19444, 0.43056, 0, 0.05556, 0.62569],\n \"968\": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139],\n \"969\": [0, 0.43056, 0.03588, 0, 0.62245],\n \"977\": [0, 0.69444, 0, 0.08334, 0.59144],\n \"981\": [0.19444, 0.69444, 0, 0.08334, 0.59583],\n \"982\": [0, 0.43056, 0.02778, 0, 0.82813],\n \"1009\": [0.19444, 0.43056, 0, 0.08334, 0.51702],\n \"1013\": [0, 0.43056, 0, 0.05556, 0.4059],\n \"57649\": [0, 0.43056, 0, 0.02778, 0.32246],\n \"57911\": [0.19444, 0.43056, 0, 0.08334, 0.38403]\n },\n \"SansSerif-Bold\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.36667],\n \"34\": [0, 0.69444, 0, 0, 0.55834],\n \"35\": [0.19444, 0.69444, 0, 0, 0.91667],\n \"36\": [0.05556, 0.75, 0, 0, 0.55],\n \"37\": [0.05556, 0.75, 0, 0, 1.02912],\n \"38\": [0, 0.69444, 0, 0, 0.83056],\n \"39\": [0, 0.69444, 0, 0, 0.30556],\n \"40\": [0.25, 0.75, 0, 0, 0.42778],\n \"41\": [0.25, 0.75, 0, 0, 0.42778],\n \"42\": [0, 0.75, 0, 0, 0.55],\n \"43\": [0.11667, 0.61667, 0, 0, 0.85556],\n \"44\": [0.10556, 0.13056, 0, 0, 0.30556],\n \"45\": [0, 0.45833, 0, 0, 0.36667],\n \"46\": [0, 0.13056, 0, 0, 0.30556],\n \"47\": [0.25, 0.75, 0, 0, 0.55],\n \"48\": [0, 0.69444, 0, 0, 0.55],\n \"49\": [0, 0.69444, 0, 0, 0.55],\n \"50\": [0, 0.69444, 0, 0, 0.55],\n \"51\": [0, 0.69444, 0, 0, 0.55],\n \"52\": [0, 0.69444, 0, 0, 0.55],\n \"53\": [0, 0.69444, 0, 0, 0.55],\n \"54\": [0, 0.69444, 0, 0, 0.55],\n \"55\": [0, 0.69444, 0, 0, 0.55],\n \"56\": [0, 0.69444, 0, 0, 0.55],\n \"57\": [0, 0.69444, 0, 0, 0.55],\n \"58\": [0, 0.45833, 0, 0, 0.30556],\n \"59\": [0.10556, 0.45833, 0, 0, 0.30556],\n \"61\": [-0.09375, 0.40625, 0, 0, 0.85556],\n \"63\": [0, 0.69444, 0, 0, 0.51945],\n \"64\": [0, 0.69444, 0, 0, 0.73334],\n \"65\": [0, 0.69444, 0, 0, 0.73334],\n \"66\": [0, 0.69444, 0, 0, 0.73334],\n \"67\": [0, 0.69444, 0, 0, 0.70278],\n \"68\": [0, 0.69444, 0, 0, 0.79445],\n \"69\": [0, 0.69444, 0, 0, 0.64167],\n \"70\": [0, 0.69444, 0, 0, 0.61111],\n \"71\": [0, 0.69444, 0, 0, 0.73334],\n \"72\": [0, 0.69444, 0, 0, 0.79445],\n \"73\": [0, 0.69444, 0, 0, 0.33056],\n \"74\": [0, 0.69444, 0, 0, 0.51945],\n \"75\": [0, 0.69444, 0, 0, 0.76389],\n \"76\": [0, 0.69444, 0, 0, 0.58056],\n \"77\": [0, 0.69444, 0, 0, 0.97778],\n \"78\": [0, 0.69444, 0, 0, 0.79445],\n \"79\": [0, 0.69444, 0, 0, 0.79445],\n \"80\": [0, 0.69444, 0, 0, 0.70278],\n \"81\": [0.10556, 0.69444, 0, 0, 0.79445],\n \"82\": [0, 0.69444, 0, 0, 0.70278],\n \"83\": [0, 0.69444, 0, 0, 0.61111],\n \"84\": [0, 0.69444, 0, 0, 0.73334],\n \"85\": [0, 0.69444, 0, 0, 0.76389],\n \"86\": [0, 0.69444, 0.01528, 0, 0.73334],\n \"87\": [0, 0.69444, 0.01528, 0, 1.03889],\n \"88\": [0, 0.69444, 0, 0, 0.73334],\n \"89\": [0, 0.69444, 0.0275, 0, 0.73334],\n \"90\": [0, 0.69444, 0, 0, 0.67223],\n \"91\": [0.25, 0.75, 0, 0, 0.34306],\n \"93\": [0.25, 0.75, 0, 0, 0.34306],\n \"94\": [0, 0.69444, 0, 0, 0.55],\n \"95\": [0.35, 0.10833, 0.03056, 0, 0.55],\n \"97\": [0, 0.45833, 0, 0, 0.525],\n \"98\": [0, 0.69444, 0, 0, 0.56111],\n \"99\": [0, 0.45833, 0, 0, 0.48889],\n \"100\": [0, 0.69444, 0, 0, 0.56111],\n \"101\": [0, 0.45833, 0, 0, 0.51111],\n \"102\": [0, 0.69444, 0.07639, 0, 0.33611],\n \"103\": [0.19444, 0.45833, 0.01528, 0, 0.55],\n \"104\": [0, 0.69444, 0, 0, 0.56111],\n \"105\": [0, 0.69444, 0, 0, 0.25556],\n \"106\": [0.19444, 0.69444, 0, 0, 0.28611],\n \"107\": [0, 0.69444, 0, 0, 0.53056],\n \"108\": [0, 0.69444, 0, 0, 0.25556],\n \"109\": [0, 0.45833, 0, 0, 0.86667],\n \"110\": [0, 0.45833, 0, 0, 0.56111],\n \"111\": [0, 0.45833, 0, 0, 0.55],\n \"112\": [0.19444, 0.45833, 0, 0, 0.56111],\n \"113\": [0.19444, 0.45833, 0, 0, 0.56111],\n \"114\": [0, 0.45833, 0.01528, 0, 0.37222],\n \"115\": [0, 0.45833, 0, 0, 0.42167],\n \"116\": [0, 0.58929, 0, 0, 0.40417],\n \"117\": [0, 0.45833, 0, 0, 0.56111],\n \"118\": [0, 0.45833, 0.01528, 0, 0.5],\n \"119\": [0, 0.45833, 0.01528, 0, 0.74445],\n \"120\": [0, 0.45833, 0, 0, 0.5],\n \"121\": [0.19444, 0.45833, 0.01528, 0, 0.5],\n \"122\": [0, 0.45833, 0, 0, 0.47639],\n \"126\": [0.35, 0.34444, 0, 0, 0.55],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.69444, 0, 0, 0.55],\n \"176\": [0, 0.69444, 0, 0, 0.73334],\n \"180\": [0, 0.69444, 0, 0, 0.55],\n \"184\": [0.17014, 0, 0, 0, 0.48889],\n \"305\": [0, 0.45833, 0, 0, 0.25556],\n \"567\": [0.19444, 0.45833, 0, 0, 0.28611],\n \"710\": [0, 0.69444, 0, 0, 0.55],\n \"711\": [0, 0.63542, 0, 0, 0.55],\n \"713\": [0, 0.63778, 0, 0, 0.55],\n \"728\": [0, 0.69444, 0, 0, 0.55],\n \"729\": [0, 0.69444, 0, 0, 0.30556],\n \"730\": [0, 0.69444, 0, 0, 0.73334],\n \"732\": [0, 0.69444, 0, 0, 0.55],\n \"733\": [0, 0.69444, 0, 0, 0.55],\n \"915\": [0, 0.69444, 0, 0, 0.58056],\n \"916\": [0, 0.69444, 0, 0, 0.91667],\n \"920\": [0, 0.69444, 0, 0, 0.85556],\n \"923\": [0, 0.69444, 0, 0, 0.67223],\n \"926\": [0, 0.69444, 0, 0, 0.73334],\n \"928\": [0, 0.69444, 0, 0, 0.79445],\n \"931\": [0, 0.69444, 0, 0, 0.79445],\n \"933\": [0, 0.69444, 0, 0, 0.85556],\n \"934\": [0, 0.69444, 0, 0, 0.79445],\n \"936\": [0, 0.69444, 0, 0, 0.85556],\n \"937\": [0, 0.69444, 0, 0, 0.79445],\n \"8211\": [0, 0.45833, 0.03056, 0, 0.55],\n \"8212\": [0, 0.45833, 0.03056, 0, 1.10001],\n \"8216\": [0, 0.69444, 0, 0, 0.30556],\n \"8217\": [0, 0.69444, 0, 0, 0.30556],\n \"8220\": [0, 0.69444, 0, 0, 0.55834],\n \"8221\": [0, 0.69444, 0, 0, 0.55834]\n },\n \"SansSerif-Italic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0.05733, 0, 0.31945],\n \"34\": [0, 0.69444, 0.00316, 0, 0.5],\n \"35\": [0.19444, 0.69444, 0.05087, 0, 0.83334],\n \"36\": [0.05556, 0.75, 0.11156, 0, 0.5],\n \"37\": [0.05556, 0.75, 0.03126, 0, 0.83334],\n \"38\": [0, 0.69444, 0.03058, 0, 0.75834],\n \"39\": [0, 0.69444, 0.07816, 0, 0.27778],\n \"40\": [0.25, 0.75, 0.13164, 0, 0.38889],\n \"41\": [0.25, 0.75, 0.02536, 0, 0.38889],\n \"42\": [0, 0.75, 0.11775, 0, 0.5],\n \"43\": [0.08333, 0.58333, 0.02536, 0, 0.77778],\n \"44\": [0.125, 0.08333, 0, 0, 0.27778],\n \"45\": [0, 0.44444, 0.01946, 0, 0.33333],\n \"46\": [0, 0.08333, 0, 0, 0.27778],\n \"47\": [0.25, 0.75, 0.13164, 0, 0.5],\n \"48\": [0, 0.65556, 0.11156, 0, 0.5],\n \"49\": [0, 0.65556, 0.11156, 0, 0.5],\n \"50\": [0, 0.65556, 0.11156, 0, 0.5],\n \"51\": [0, 0.65556, 0.11156, 0, 0.5],\n \"52\": [0, 0.65556, 0.11156, 0, 0.5],\n \"53\": [0, 0.65556, 0.11156, 0, 0.5],\n \"54\": [0, 0.65556, 0.11156, 0, 0.5],\n \"55\": [0, 0.65556, 0.11156, 0, 0.5],\n \"56\": [0, 0.65556, 0.11156, 0, 0.5],\n \"57\": [0, 0.65556, 0.11156, 0, 0.5],\n \"58\": [0, 0.44444, 0.02502, 0, 0.27778],\n \"59\": [0.125, 0.44444, 0.02502, 0, 0.27778],\n \"61\": [-0.13, 0.37, 0.05087, 0, 0.77778],\n \"63\": [0, 0.69444, 0.11809, 0, 0.47222],\n \"64\": [0, 0.69444, 0.07555, 0, 0.66667],\n \"65\": [0, 0.69444, 0, 0, 0.66667],\n \"66\": [0, 0.69444, 0.08293, 0, 0.66667],\n \"67\": [0, 0.69444, 0.11983, 0, 0.63889],\n \"68\": [0, 0.69444, 0.07555, 0, 0.72223],\n \"69\": [0, 0.69444, 0.11983, 0, 0.59722],\n \"70\": [0, 0.69444, 0.13372, 0, 0.56945],\n \"71\": [0, 0.69444, 0.11983, 0, 0.66667],\n \"72\": [0, 0.69444, 0.08094, 0, 0.70834],\n \"73\": [0, 0.69444, 0.13372, 0, 0.27778],\n \"74\": [0, 0.69444, 0.08094, 0, 0.47222],\n \"75\": [0, 0.69444, 0.11983, 0, 0.69445],\n \"76\": [0, 0.69444, 0, 0, 0.54167],\n \"77\": [0, 0.69444, 0.08094, 0, 0.875],\n \"78\": [0, 0.69444, 0.08094, 0, 0.70834],\n \"79\": [0, 0.69444, 0.07555, 0, 0.73611],\n \"80\": [0, 0.69444, 0.08293, 0, 0.63889],\n \"81\": [0.125, 0.69444, 0.07555, 0, 0.73611],\n \"82\": [0, 0.69444, 0.08293, 0, 0.64584],\n \"83\": [0, 0.69444, 0.09205, 0, 0.55556],\n \"84\": [0, 0.69444, 0.13372, 0, 0.68056],\n \"85\": [0, 0.69444, 0.08094, 0, 0.6875],\n \"86\": [0, 0.69444, 0.1615, 0, 0.66667],\n \"87\": [0, 0.69444, 0.1615, 0, 0.94445],\n \"88\": [0, 0.69444, 0.13372, 0, 0.66667],\n \"89\": [0, 0.69444, 0.17261, 0, 0.66667],\n \"90\": [0, 0.69444, 0.11983, 0, 0.61111],\n \"91\": [0.25, 0.75, 0.15942, 0, 0.28889],\n \"93\": [0.25, 0.75, 0.08719, 0, 0.28889],\n \"94\": [0, 0.69444, 0.0799, 0, 0.5],\n \"95\": [0.35, 0.09444, 0.08616, 0, 0.5],\n \"97\": [0, 0.44444, 0.00981, 0, 0.48056],\n \"98\": [0, 0.69444, 0.03057, 0, 0.51667],\n \"99\": [0, 0.44444, 0.08336, 0, 0.44445],\n \"100\": [0, 0.69444, 0.09483, 0, 0.51667],\n \"101\": [0, 0.44444, 0.06778, 0, 0.44445],\n \"102\": [0, 0.69444, 0.21705, 0, 0.30556],\n \"103\": [0.19444, 0.44444, 0.10836, 0, 0.5],\n \"104\": [0, 0.69444, 0.01778, 0, 0.51667],\n \"105\": [0, 0.67937, 0.09718, 0, 0.23889],\n \"106\": [0.19444, 0.67937, 0.09162, 0, 0.26667],\n \"107\": [0, 0.69444, 0.08336, 0, 0.48889],\n \"108\": [0, 0.69444, 0.09483, 0, 0.23889],\n \"109\": [0, 0.44444, 0.01778, 0, 0.79445],\n \"110\": [0, 0.44444, 0.01778, 0, 0.51667],\n \"111\": [0, 0.44444, 0.06613, 0, 0.5],\n \"112\": [0.19444, 0.44444, 0.0389, 0, 0.51667],\n \"113\": [0.19444, 0.44444, 0.04169, 0, 0.51667],\n \"114\": [0, 0.44444, 0.10836, 0, 0.34167],\n \"115\": [0, 0.44444, 0.0778, 0, 0.38333],\n \"116\": [0, 0.57143, 0.07225, 0, 0.36111],\n \"117\": [0, 0.44444, 0.04169, 0, 0.51667],\n \"118\": [0, 0.44444, 0.10836, 0, 0.46111],\n \"119\": [0, 0.44444, 0.10836, 0, 0.68334],\n \"120\": [0, 0.44444, 0.09169, 0, 0.46111],\n \"121\": [0.19444, 0.44444, 0.10836, 0, 0.46111],\n \"122\": [0, 0.44444, 0.08752, 0, 0.43472],\n \"126\": [0.35, 0.32659, 0.08826, 0, 0.5],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.67937, 0.06385, 0, 0.5],\n \"176\": [0, 0.69444, 0, 0, 0.73752],\n \"184\": [0.17014, 0, 0, 0, 0.44445],\n \"305\": [0, 0.44444, 0.04169, 0, 0.23889],\n \"567\": [0.19444, 0.44444, 0.04169, 0, 0.26667],\n \"710\": [0, 0.69444, 0.0799, 0, 0.5],\n \"711\": [0, 0.63194, 0.08432, 0, 0.5],\n \"713\": [0, 0.60889, 0.08776, 0, 0.5],\n \"714\": [0, 0.69444, 0.09205, 0, 0.5],\n \"715\": [0, 0.69444, 0, 0, 0.5],\n \"728\": [0, 0.69444, 0.09483, 0, 0.5],\n \"729\": [0, 0.67937, 0.07774, 0, 0.27778],\n \"730\": [0, 0.69444, 0, 0, 0.73752],\n \"732\": [0, 0.67659, 0.08826, 0, 0.5],\n \"733\": [0, 0.69444, 0.09205, 0, 0.5],\n \"915\": [0, 0.69444, 0.13372, 0, 0.54167],\n \"916\": [0, 0.69444, 0, 0, 0.83334],\n \"920\": [0, 0.69444, 0.07555, 0, 0.77778],\n \"923\": [0, 0.69444, 0, 0, 0.61111],\n \"926\": [0, 0.69444, 0.12816, 0, 0.66667],\n \"928\": [0, 0.69444, 0.08094, 0, 0.70834],\n \"931\": [0, 0.69444, 0.11983, 0, 0.72222],\n \"933\": [0, 0.69444, 0.09031, 0, 0.77778],\n \"934\": [0, 0.69444, 0.04603, 0, 0.72222],\n \"936\": [0, 0.69444, 0.09031, 0, 0.77778],\n \"937\": [0, 0.69444, 0.08293, 0, 0.72222],\n \"8211\": [0, 0.44444, 0.08616, 0, 0.5],\n \"8212\": [0, 0.44444, 0.08616, 0, 1.0],\n \"8216\": [0, 0.69444, 0.07816, 0, 0.27778],\n \"8217\": [0, 0.69444, 0.07816, 0, 0.27778],\n \"8220\": [0, 0.69444, 0.14205, 0, 0.5],\n \"8221\": [0, 0.69444, 0.00316, 0, 0.5]\n },\n \"SansSerif-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.31945],\n \"34\": [0, 0.69444, 0, 0, 0.5],\n \"35\": [0.19444, 0.69444, 0, 0, 0.83334],\n \"36\": [0.05556, 0.75, 0, 0, 0.5],\n \"37\": [0.05556, 0.75, 0, 0, 0.83334],\n \"38\": [0, 0.69444, 0, 0, 0.75834],\n \"39\": [0, 0.69444, 0, 0, 0.27778],\n \"40\": [0.25, 0.75, 0, 0, 0.38889],\n \"41\": [0.25, 0.75, 0, 0, 0.38889],\n \"42\": [0, 0.75, 0, 0, 0.5],\n \"43\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"44\": [0.125, 0.08333, 0, 0, 0.27778],\n \"45\": [0, 0.44444, 0, 0, 0.33333],\n \"46\": [0, 0.08333, 0, 0, 0.27778],\n \"47\": [0.25, 0.75, 0, 0, 0.5],\n \"48\": [0, 0.65556, 0, 0, 0.5],\n \"49\": [0, 0.65556, 0, 0, 0.5],\n \"50\": [0, 0.65556, 0, 0, 0.5],\n \"51\": [0, 0.65556, 0, 0, 0.5],\n \"52\": [0, 0.65556, 0, 0, 0.5],\n \"53\": [0, 0.65556, 0, 0, 0.5],\n \"54\": [0, 0.65556, 0, 0, 0.5],\n \"55\": [0, 0.65556, 0, 0, 0.5],\n \"56\": [0, 0.65556, 0, 0, 0.5],\n \"57\": [0, 0.65556, 0, 0, 0.5],\n \"58\": [0, 0.44444, 0, 0, 0.27778],\n \"59\": [0.125, 0.44444, 0, 0, 0.27778],\n \"61\": [-0.13, 0.37, 0, 0, 0.77778],\n \"63\": [0, 0.69444, 0, 0, 0.47222],\n \"64\": [0, 0.69444, 0, 0, 0.66667],\n \"65\": [0, 0.69444, 0, 0, 0.66667],\n \"66\": [0, 0.69444, 0, 0, 0.66667],\n \"67\": [0, 0.69444, 0, 0, 0.63889],\n \"68\": [0, 0.69444, 0, 0, 0.72223],\n \"69\": [0, 0.69444, 0, 0, 0.59722],\n \"70\": [0, 0.69444, 0, 0, 0.56945],\n \"71\": [0, 0.69444, 0, 0, 0.66667],\n \"72\": [0, 0.69444, 0, 0, 0.70834],\n \"73\": [0, 0.69444, 0, 0, 0.27778],\n \"74\": [0, 0.69444, 0, 0, 0.47222],\n \"75\": [0, 0.69444, 0, 0, 0.69445],\n \"76\": [0, 0.69444, 0, 0, 0.54167],\n \"77\": [0, 0.69444, 0, 0, 0.875],\n \"78\": [0, 0.69444, 0, 0, 0.70834],\n \"79\": [0, 0.69444, 0, 0, 0.73611],\n \"80\": [0, 0.69444, 0, 0, 0.63889],\n \"81\": [0.125, 0.69444, 0, 0, 0.73611],\n \"82\": [0, 0.69444, 0, 0, 0.64584],\n \"83\": [0, 0.69444, 0, 0, 0.55556],\n \"84\": [0, 0.69444, 0, 0, 0.68056],\n \"85\": [0, 0.69444, 0, 0, 0.6875],\n \"86\": [0, 0.69444, 0.01389, 0, 0.66667],\n \"87\": [0, 0.69444, 0.01389, 0, 0.94445],\n \"88\": [0, 0.69444, 0, 0, 0.66667],\n \"89\": [0, 0.69444, 0.025, 0, 0.66667],\n \"90\": [0, 0.69444, 0, 0, 0.61111],\n \"91\": [0.25, 0.75, 0, 0, 0.28889],\n \"93\": [0.25, 0.75, 0, 0, 0.28889],\n \"94\": [0, 0.69444, 0, 0, 0.5],\n \"95\": [0.35, 0.09444, 0.02778, 0, 0.5],\n \"97\": [0, 0.44444, 0, 0, 0.48056],\n \"98\": [0, 0.69444, 0, 0, 0.51667],\n \"99\": [0, 0.44444, 0, 0, 0.44445],\n \"100\": [0, 0.69444, 0, 0, 0.51667],\n \"101\": [0, 0.44444, 0, 0, 0.44445],\n \"102\": [0, 0.69444, 0.06944, 0, 0.30556],\n \"103\": [0.19444, 0.44444, 0.01389, 0, 0.5],\n \"104\": [0, 0.69444, 0, 0, 0.51667],\n \"105\": [0, 0.67937, 0, 0, 0.23889],\n \"106\": [0.19444, 0.67937, 0, 0, 0.26667],\n \"107\": [0, 0.69444, 0, 0, 0.48889],\n \"108\": [0, 0.69444, 0, 0, 0.23889],\n \"109\": [0, 0.44444, 0, 0, 0.79445],\n \"110\": [0, 0.44444, 0, 0, 0.51667],\n \"111\": [0, 0.44444, 0, 0, 0.5],\n \"112\": [0.19444, 0.44444, 0, 0, 0.51667],\n \"113\": [0.19444, 0.44444, 0, 0, 0.51667],\n \"114\": [0, 0.44444, 0.01389, 0, 0.34167],\n \"115\": [0, 0.44444, 0, 0, 0.38333],\n \"116\": [0, 0.57143, 0, 0, 0.36111],\n \"117\": [0, 0.44444, 0, 0, 0.51667],\n \"118\": [0, 0.44444, 0.01389, 0, 0.46111],\n \"119\": [0, 0.44444, 0.01389, 0, 0.68334],\n \"120\": [0, 0.44444, 0, 0, 0.46111],\n \"121\": [0.19444, 0.44444, 0.01389, 0, 0.46111],\n \"122\": [0, 0.44444, 0, 0, 0.43472],\n \"126\": [0.35, 0.32659, 0, 0, 0.5],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.67937, 0, 0, 0.5],\n \"176\": [0, 0.69444, 0, 0, 0.66667],\n \"184\": [0.17014, 0, 0, 0, 0.44445],\n \"305\": [0, 0.44444, 0, 0, 0.23889],\n \"567\": [0.19444, 0.44444, 0, 0, 0.26667],\n \"710\": [0, 0.69444, 0, 0, 0.5],\n \"711\": [0, 0.63194, 0, 0, 0.5],\n \"713\": [0, 0.60889, 0, 0, 0.5],\n \"714\": [0, 0.69444, 0, 0, 0.5],\n \"715\": [0, 0.69444, 0, 0, 0.5],\n \"728\": [0, 0.69444, 0, 0, 0.5],\n \"729\": [0, 0.67937, 0, 0, 0.27778],\n \"730\": [0, 0.69444, 0, 0, 0.66667],\n \"732\": [0, 0.67659, 0, 0, 0.5],\n \"733\": [0, 0.69444, 0, 0, 0.5],\n \"915\": [0, 0.69444, 0, 0, 0.54167],\n \"916\": [0, 0.69444, 0, 0, 0.83334],\n \"920\": [0, 0.69444, 0, 0, 0.77778],\n \"923\": [0, 0.69444, 0, 0, 0.61111],\n \"926\": [0, 0.69444, 0, 0, 0.66667],\n \"928\": [0, 0.69444, 0, 0, 0.70834],\n \"931\": [0, 0.69444, 0, 0, 0.72222],\n \"933\": [0, 0.69444, 0, 0, 0.77778],\n \"934\": [0, 0.69444, 0, 0, 0.72222],\n \"936\": [0, 0.69444, 0, 0, 0.77778],\n \"937\": [0, 0.69444, 0, 0, 0.72222],\n \"8211\": [0, 0.44444, 0.02778, 0, 0.5],\n \"8212\": [0, 0.44444, 0.02778, 0, 1.0],\n \"8216\": [0, 0.69444, 0, 0, 0.27778],\n \"8217\": [0, 0.69444, 0, 0, 0.27778],\n \"8220\": [0, 0.69444, 0, 0, 0.5],\n \"8221\": [0, 0.69444, 0, 0, 0.5]\n },\n \"Script-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"65\": [0, 0.7, 0.22925, 0, 0.80253],\n \"66\": [0, 0.7, 0.04087, 0, 0.90757],\n \"67\": [0, 0.7, 0.1689, 0, 0.66619],\n \"68\": [0, 0.7, 0.09371, 0, 0.77443],\n \"69\": [0, 0.7, 0.18583, 0, 0.56162],\n \"70\": [0, 0.7, 0.13634, 0, 0.89544],\n \"71\": [0, 0.7, 0.17322, 0, 0.60961],\n \"72\": [0, 0.7, 0.29694, 0, 0.96919],\n \"73\": [0, 0.7, 0.19189, 0, 0.80907],\n \"74\": [0.27778, 0.7, 0.19189, 0, 1.05159],\n \"75\": [0, 0.7, 0.31259, 0, 0.91364],\n \"76\": [0, 0.7, 0.19189, 0, 0.87373],\n \"77\": [0, 0.7, 0.15981, 0, 1.08031],\n \"78\": [0, 0.7, 0.3525, 0, 0.9015],\n \"79\": [0, 0.7, 0.08078, 0, 0.73787],\n \"80\": [0, 0.7, 0.08078, 0, 1.01262],\n \"81\": [0, 0.7, 0.03305, 0, 0.88282],\n \"82\": [0, 0.7, 0.06259, 0, 0.85],\n \"83\": [0, 0.7, 0.19189, 0, 0.86767],\n \"84\": [0, 0.7, 0.29087, 0, 0.74697],\n \"85\": [0, 0.7, 0.25815, 0, 0.79996],\n \"86\": [0, 0.7, 0.27523, 0, 0.62204],\n \"87\": [0, 0.7, 0.27523, 0, 0.80532],\n \"88\": [0, 0.7, 0.26006, 0, 0.94445],\n \"89\": [0, 0.7, 0.2939, 0, 0.70961],\n \"90\": [0, 0.7, 0.24037, 0, 0.8212],\n \"160\": [0, 0, 0, 0, 0.25]\n },\n \"Size1-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [0.35001, 0.85, 0, 0, 0.45834],\n \"41\": [0.35001, 0.85, 0, 0, 0.45834],\n \"47\": [0.35001, 0.85, 0, 0, 0.57778],\n \"91\": [0.35001, 0.85, 0, 0, 0.41667],\n \"92\": [0.35001, 0.85, 0, 0, 0.57778],\n \"93\": [0.35001, 0.85, 0, 0, 0.41667],\n \"123\": [0.35001, 0.85, 0, 0, 0.58334],\n \"125\": [0.35001, 0.85, 0, 0, 0.58334],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.72222, 0, 0, 0.55556],\n \"732\": [0, 0.72222, 0, 0, 0.55556],\n \"770\": [0, 0.72222, 0, 0, 0.55556],\n \"771\": [0, 0.72222, 0, 0, 0.55556],\n \"8214\": [-0.00099, 0.601, 0, 0, 0.77778],\n \"8593\": [1e-05, 0.6, 0, 0, 0.66667],\n \"8595\": [1e-05, 0.6, 0, 0, 0.66667],\n \"8657\": [1e-05, 0.6, 0, 0, 0.77778],\n \"8659\": [1e-05, 0.6, 0, 0, 0.77778],\n \"8719\": [0.25001, 0.75, 0, 0, 0.94445],\n \"8720\": [0.25001, 0.75, 0, 0, 0.94445],\n \"8721\": [0.25001, 0.75, 0, 0, 1.05556],\n \"8730\": [0.35001, 0.85, 0, 0, 1.0],\n \"8739\": [-0.00599, 0.606, 0, 0, 0.33333],\n \"8741\": [-0.00599, 0.606, 0, 0, 0.55556],\n \"8747\": [0.30612, 0.805, 0.19445, 0, 0.47222],\n \"8748\": [0.306, 0.805, 0.19445, 0, 0.47222],\n \"8749\": [0.306, 0.805, 0.19445, 0, 0.47222],\n \"8750\": [0.30612, 0.805, 0.19445, 0, 0.47222],\n \"8896\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8897\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8898\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8899\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8968\": [0.35001, 0.85, 0, 0, 0.47222],\n \"8969\": [0.35001, 0.85, 0, 0, 0.47222],\n \"8970\": [0.35001, 0.85, 0, 0, 0.47222],\n \"8971\": [0.35001, 0.85, 0, 0, 0.47222],\n \"9168\": [-0.00099, 0.601, 0, 0, 0.66667],\n \"10216\": [0.35001, 0.85, 0, 0, 0.47222],\n \"10217\": [0.35001, 0.85, 0, 0, 0.47222],\n \"10752\": [0.25001, 0.75, 0, 0, 1.11111],\n \"10753\": [0.25001, 0.75, 0, 0, 1.11111],\n \"10754\": [0.25001, 0.75, 0, 0, 1.11111],\n \"10756\": [0.25001, 0.75, 0, 0, 0.83334],\n \"10758\": [0.25001, 0.75, 0, 0, 0.83334]\n },\n \"Size2-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [0.65002, 1.15, 0, 0, 0.59722],\n \"41\": [0.65002, 1.15, 0, 0, 0.59722],\n \"47\": [0.65002, 1.15, 0, 0, 0.81111],\n \"91\": [0.65002, 1.15, 0, 0, 0.47222],\n \"92\": [0.65002, 1.15, 0, 0, 0.81111],\n \"93\": [0.65002, 1.15, 0, 0, 0.47222],\n \"123\": [0.65002, 1.15, 0, 0, 0.66667],\n \"125\": [0.65002, 1.15, 0, 0, 0.66667],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.75, 0, 0, 1.0],\n \"732\": [0, 0.75, 0, 0, 1.0],\n \"770\": [0, 0.75, 0, 0, 1.0],\n \"771\": [0, 0.75, 0, 0, 1.0],\n \"8719\": [0.55001, 1.05, 0, 0, 1.27778],\n \"8720\": [0.55001, 1.05, 0, 0, 1.27778],\n \"8721\": [0.55001, 1.05, 0, 0, 1.44445],\n \"8730\": [0.65002, 1.15, 0, 0, 1.0],\n \"8747\": [0.86225, 1.36, 0.44445, 0, 0.55556],\n \"8748\": [0.862, 1.36, 0.44445, 0, 0.55556],\n \"8749\": [0.862, 1.36, 0.44445, 0, 0.55556],\n \"8750\": [0.86225, 1.36, 0.44445, 0, 0.55556],\n \"8896\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8897\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8898\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8899\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8968\": [0.65002, 1.15, 0, 0, 0.52778],\n \"8969\": [0.65002, 1.15, 0, 0, 0.52778],\n \"8970\": [0.65002, 1.15, 0, 0, 0.52778],\n \"8971\": [0.65002, 1.15, 0, 0, 0.52778],\n \"10216\": [0.65002, 1.15, 0, 0, 0.61111],\n \"10217\": [0.65002, 1.15, 0, 0, 0.61111],\n \"10752\": [0.55001, 1.05, 0, 0, 1.51112],\n \"10753\": [0.55001, 1.05, 0, 0, 1.51112],\n \"10754\": [0.55001, 1.05, 0, 0, 1.51112],\n \"10756\": [0.55001, 1.05, 0, 0, 1.11111],\n \"10758\": [0.55001, 1.05, 0, 0, 1.11111]\n },\n \"Size3-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [0.95003, 1.45, 0, 0, 0.73611],\n \"41\": [0.95003, 1.45, 0, 0, 0.73611],\n \"47\": [0.95003, 1.45, 0, 0, 1.04445],\n \"91\": [0.95003, 1.45, 0, 0, 0.52778],\n \"92\": [0.95003, 1.45, 0, 0, 1.04445],\n \"93\": [0.95003, 1.45, 0, 0, 0.52778],\n \"123\": [0.95003, 1.45, 0, 0, 0.75],\n \"125\": [0.95003, 1.45, 0, 0, 0.75],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.75, 0, 0, 1.44445],\n \"732\": [0, 0.75, 0, 0, 1.44445],\n \"770\": [0, 0.75, 0, 0, 1.44445],\n \"771\": [0, 0.75, 0, 0, 1.44445],\n \"8730\": [0.95003, 1.45, 0, 0, 1.0],\n \"8968\": [0.95003, 1.45, 0, 0, 0.58334],\n \"8969\": [0.95003, 1.45, 0, 0, 0.58334],\n \"8970\": [0.95003, 1.45, 0, 0, 0.58334],\n \"8971\": [0.95003, 1.45, 0, 0, 0.58334],\n \"10216\": [0.95003, 1.45, 0, 0, 0.75],\n \"10217\": [0.95003, 1.45, 0, 0, 0.75]\n },\n \"Size4-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [1.25003, 1.75, 0, 0, 0.79167],\n \"41\": [1.25003, 1.75, 0, 0, 0.79167],\n \"47\": [1.25003, 1.75, 0, 0, 1.27778],\n \"91\": [1.25003, 1.75, 0, 0, 0.58334],\n \"92\": [1.25003, 1.75, 0, 0, 1.27778],\n \"93\": [1.25003, 1.75, 0, 0, 0.58334],\n \"123\": [1.25003, 1.75, 0, 0, 0.80556],\n \"125\": [1.25003, 1.75, 0, 0, 0.80556],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.825, 0, 0, 1.8889],\n \"732\": [0, 0.825, 0, 0, 1.8889],\n \"770\": [0, 0.825, 0, 0, 1.8889],\n \"771\": [0, 0.825, 0, 0, 1.8889],\n \"8730\": [1.25003, 1.75, 0, 0, 1.0],\n \"8968\": [1.25003, 1.75, 0, 0, 0.63889],\n \"8969\": [1.25003, 1.75, 0, 0, 0.63889],\n \"8970\": [1.25003, 1.75, 0, 0, 0.63889],\n \"8971\": [1.25003, 1.75, 0, 0, 0.63889],\n \"9115\": [0.64502, 1.155, 0, 0, 0.875],\n \"9116\": [1e-05, 0.6, 0, 0, 0.875],\n \"9117\": [0.64502, 1.155, 0, 0, 0.875],\n \"9118\": [0.64502, 1.155, 0, 0, 0.875],\n \"9119\": [1e-05, 0.6, 0, 0, 0.875],\n \"9120\": [0.64502, 1.155, 0, 0, 0.875],\n \"9121\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9122\": [-0.00099, 0.601, 0, 0, 0.66667],\n \"9123\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9124\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9125\": [-0.00099, 0.601, 0, 0, 0.66667],\n \"9126\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9127\": [1e-05, 0.9, 0, 0, 0.88889],\n \"9128\": [0.65002, 1.15, 0, 0, 0.88889],\n \"9129\": [0.90001, 0, 0, 0, 0.88889],\n \"9130\": [0, 0.3, 0, 0, 0.88889],\n \"9131\": [1e-05, 0.9, 0, 0, 0.88889],\n \"9132\": [0.65002, 1.15, 0, 0, 0.88889],\n \"9133\": [0.90001, 0, 0, 0, 0.88889],\n \"9143\": [0.88502, 0.915, 0, 0, 1.05556],\n \"10216\": [1.25003, 1.75, 0, 0, 0.80556],\n \"10217\": [1.25003, 1.75, 0, 0, 0.80556],\n \"57344\": [-0.00499, 0.605, 0, 0, 1.05556],\n \"57345\": [-0.00499, 0.605, 0, 0, 1.05556],\n \"57680\": [0, 0.12, 0, 0, 0.45],\n \"57681\": [0, 0.12, 0, 0, 0.45],\n \"57682\": [0, 0.12, 0, 0, 0.45],\n \"57683\": [0, 0.12, 0, 0, 0.45]\n },\n \"Typewriter-Regular\": {\n \"32\": [0, 0, 0, 0, 0.525],\n \"33\": [0, 0.61111, 0, 0, 0.525],\n \"34\": [0, 0.61111, 0, 0, 0.525],\n \"35\": [0, 0.61111, 0, 0, 0.525],\n \"36\": [0.08333, 0.69444, 0, 0, 0.525],\n \"37\": [0.08333, 0.69444, 0, 0, 0.525],\n \"38\": [0, 0.61111, 0, 0, 0.525],\n \"39\": [0, 0.61111, 0, 0, 0.525],\n \"40\": [0.08333, 0.69444, 0, 0, 0.525],\n \"41\": [0.08333, 0.69444, 0, 0, 0.525],\n \"42\": [0, 0.52083, 0, 0, 0.525],\n \"43\": [-0.08056, 0.53055, 0, 0, 0.525],\n \"44\": [0.13889, 0.125, 0, 0, 0.525],\n \"45\": [-0.08056, 0.53055, 0, 0, 0.525],\n \"46\": [0, 0.125, 0, 0, 0.525],\n \"47\": [0.08333, 0.69444, 0, 0, 0.525],\n \"48\": [0, 0.61111, 0, 0, 0.525],\n \"49\": [0, 0.61111, 0, 0, 0.525],\n \"50\": [0, 0.61111, 0, 0, 0.525],\n \"51\": [0, 0.61111, 0, 0, 0.525],\n \"52\": [0, 0.61111, 0, 0, 0.525],\n \"53\": [0, 0.61111, 0, 0, 0.525],\n \"54\": [0, 0.61111, 0, 0, 0.525],\n \"55\": [0, 0.61111, 0, 0, 0.525],\n \"56\": [0, 0.61111, 0, 0, 0.525],\n \"57\": [0, 0.61111, 0, 0, 0.525],\n \"58\": [0, 0.43056, 0, 0, 0.525],\n \"59\": [0.13889, 0.43056, 0, 0, 0.525],\n \"60\": [-0.05556, 0.55556, 0, 0, 0.525],\n \"61\": [-0.19549, 0.41562, 0, 0, 0.525],\n \"62\": [-0.05556, 0.55556, 0, 0, 0.525],\n \"63\": [0, 0.61111, 0, 0, 0.525],\n \"64\": [0, 0.61111, 0, 0, 0.525],\n \"65\": [0, 0.61111, 0, 0, 0.525],\n \"66\": [0, 0.61111, 0, 0, 0.525],\n \"67\": [0, 0.61111, 0, 0, 0.525],\n \"68\": [0, 0.61111, 0, 0, 0.525],\n \"69\": [0, 0.61111, 0, 0, 0.525],\n \"70\": [0, 0.61111, 0, 0, 0.525],\n \"71\": [0, 0.61111, 0, 0, 0.525],\n \"72\": [0, 0.61111, 0, 0, 0.525],\n \"73\": [0, 0.61111, 0, 0, 0.525],\n \"74\": [0, 0.61111, 0, 0, 0.525],\n \"75\": [0, 0.61111, 0, 0, 0.525],\n \"76\": [0, 0.61111, 0, 0, 0.525],\n \"77\": [0, 0.61111, 0, 0, 0.525],\n \"78\": [0, 0.61111, 0, 0, 0.525],\n \"79\": [0, 0.61111, 0, 0, 0.525],\n \"80\": [0, 0.61111, 0, 0, 0.525],\n \"81\": [0.13889, 0.61111, 0, 0, 0.525],\n \"82\": [0, 0.61111, 0, 0, 0.525],\n \"83\": [0, 0.61111, 0, 0, 0.525],\n \"84\": [0, 0.61111, 0, 0, 0.525],\n \"85\": [0, 0.61111, 0, 0, 0.525],\n \"86\": [0, 0.61111, 0, 0, 0.525],\n \"87\": [0, 0.61111, 0, 0, 0.525],\n \"88\": [0, 0.61111, 0, 0, 0.525],\n \"89\": [0, 0.61111, 0, 0, 0.525],\n \"90\": [0, 0.61111, 0, 0, 0.525],\n \"91\": [0.08333, 0.69444, 0, 0, 0.525],\n \"92\": [0.08333, 0.69444, 0, 0, 0.525],\n \"93\": [0.08333, 0.69444, 0, 0, 0.525],\n \"94\": [0, 0.61111, 0, 0, 0.525],\n \"95\": [0.09514, 0, 0, 0, 0.525],\n \"96\": [0, 0.61111, 0, 0, 0.525],\n \"97\": [0, 0.43056, 0, 0, 0.525],\n \"98\": [0, 0.61111, 0, 0, 0.525],\n \"99\": [0, 0.43056, 0, 0, 0.525],\n \"100\": [0, 0.61111, 0, 0, 0.525],\n \"101\": [0, 0.43056, 0, 0, 0.525],\n \"102\": [0, 0.61111, 0, 0, 0.525],\n \"103\": [0.22222, 0.43056, 0, 0, 0.525],\n \"104\": [0, 0.61111, 0, 0, 0.525],\n \"105\": [0, 0.61111, 0, 0, 0.525],\n \"106\": [0.22222, 0.61111, 0, 0, 0.525],\n \"107\": [0, 0.61111, 0, 0, 0.525],\n \"108\": [0, 0.61111, 0, 0, 0.525],\n \"109\": [0, 0.43056, 0, 0, 0.525],\n \"110\": [0, 0.43056, 0, 0, 0.525],\n \"111\": [0, 0.43056, 0, 0, 0.525],\n \"112\": [0.22222, 0.43056, 0, 0, 0.525],\n \"113\": [0.22222, 0.43056, 0, 0, 0.525],\n \"114\": [0, 0.43056, 0, 0, 0.525],\n \"115\": [0, 0.43056, 0, 0, 0.525],\n \"116\": [0, 0.55358, 0, 0, 0.525],\n \"117\": [0, 0.43056, 0, 0, 0.525],\n \"118\": [0, 0.43056, 0, 0, 0.525],\n \"119\": [0, 0.43056, 0, 0, 0.525],\n \"120\": [0, 0.43056, 0, 0, 0.525],\n \"121\": [0.22222, 0.43056, 0, 0, 0.525],\n \"122\": [0, 0.43056, 0, 0, 0.525],\n \"123\": [0.08333, 0.69444, 0, 0, 0.525],\n \"124\": [0.08333, 0.69444, 0, 0, 0.525],\n \"125\": [0.08333, 0.69444, 0, 0, 0.525],\n \"126\": [0, 0.61111, 0, 0, 0.525],\n \"127\": [0, 0.61111, 0, 0, 0.525],\n \"160\": [0, 0, 0, 0, 0.525],\n \"176\": [0, 0.61111, 0, 0, 0.525],\n \"184\": [0.19445, 0, 0, 0, 0.525],\n \"305\": [0, 0.43056, 0, 0, 0.525],\n \"567\": [0.22222, 0.43056, 0, 0, 0.525],\n \"711\": [0, 0.56597, 0, 0, 0.525],\n \"713\": [0, 0.56555, 0, 0, 0.525],\n \"714\": [0, 0.61111, 0, 0, 0.525],\n \"715\": [0, 0.61111, 0, 0, 0.525],\n \"728\": [0, 0.61111, 0, 0, 0.525],\n \"730\": [0, 0.61111, 0, 0, 0.525],\n \"770\": [0, 0.61111, 0, 0, 0.525],\n \"771\": [0, 0.61111, 0, 0, 0.525],\n \"776\": [0, 0.61111, 0, 0, 0.525],\n \"915\": [0, 0.61111, 0, 0, 0.525],\n \"916\": [0, 0.61111, 0, 0, 0.525],\n \"920\": [0, 0.61111, 0, 0, 0.525],\n \"923\": [0, 0.61111, 0, 0, 0.525],\n \"926\": [0, 0.61111, 0, 0, 0.525],\n \"928\": [0, 0.61111, 0, 0, 0.525],\n \"931\": [0, 0.61111, 0, 0, 0.525],\n \"933\": [0, 0.61111, 0, 0, 0.525],\n \"934\": [0, 0.61111, 0, 0, 0.525],\n \"936\": [0, 0.61111, 0, 0, 0.525],\n \"937\": [0, 0.61111, 0, 0, 0.525],\n \"8216\": [0, 0.61111, 0, 0, 0.525],\n \"8217\": [0, 0.61111, 0, 0, 0.525],\n \"8242\": [0, 0.61111, 0, 0, 0.525],\n \"9251\": [0.11111, 0.21944, 0, 0, 0.525]\n }\n});\n;// CONCATENATED MODULE: ./src/fontMetrics.js\n\n\n/**\n * This file contains metrics regarding fonts and individual symbols. The sigma\n * and xi variables, as well as the metricMap map contain data extracted from\n * TeX, TeX font metrics, and the TTF files. These data are then exposed via the\n * `metrics` variable and the getCharacterMetrics function.\n */\n// In TeX, there are actually three sets of dimensions, one for each of\n// textstyle (size index 5 and higher: >=9pt), scriptstyle (size index 3 and 4:\n// 7-8pt), and scriptscriptstyle (size index 1 and 2: 5-6pt). These are\n// provided in the arrays below, in that order.\n//\n// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respectively.\n// This was determined by running the following script:\n//\n// latex -interaction=nonstopmode \\\n// '\\documentclass{article}\\usepackage{amsmath}\\begin{document}' \\\n// '$a$ \\expandafter\\show\\the\\textfont2' \\\n// '\\expandafter\\show\\the\\scriptfont2' \\\n// '\\expandafter\\show\\the\\scriptscriptfont2' \\\n// '\\stop'\n//\n// The metrics themselves were retrieved using the following commands:\n//\n// tftopl cmsy10\n// tftopl cmsy7\n// tftopl cmsy5\n//\n// The output of each of these commands is quite lengthy. The only part we\n// care about is the FONTDIMEN section. Each value is measured in EMs.\nconst sigmasAndXis = {\n slant: [0.250, 0.250, 0.250],\n // sigma1\n space: [0.000, 0.000, 0.000],\n // sigma2\n stretch: [0.000, 0.000, 0.000],\n // sigma3\n shrink: [0.000, 0.000, 0.000],\n // sigma4\n xHeight: [0.431, 0.431, 0.431],\n // sigma5\n quad: [1.000, 1.171, 1.472],\n // sigma6\n extraSpace: [0.000, 0.000, 0.000],\n // sigma7\n num1: [0.677, 0.732, 0.925],\n // sigma8\n num2: [0.394, 0.384, 0.387],\n // sigma9\n num3: [0.444, 0.471, 0.504],\n // sigma10\n denom1: [0.686, 0.752, 1.025],\n // sigma11\n denom2: [0.345, 0.344, 0.532],\n // sigma12\n sup1: [0.413, 0.503, 0.504],\n // sigma13\n sup2: [0.363, 0.431, 0.404],\n // sigma14\n sup3: [0.289, 0.286, 0.294],\n // sigma15\n sub1: [0.150, 0.143, 0.200],\n // sigma16\n sub2: [0.247, 0.286, 0.400],\n // sigma17\n supDrop: [0.386, 0.353, 0.494],\n // sigma18\n subDrop: [0.050, 0.071, 0.100],\n // sigma19\n delim1: [2.390, 1.700, 1.980],\n // sigma20\n delim2: [1.010, 1.157, 1.420],\n // sigma21\n axisHeight: [0.250, 0.250, 0.250],\n // sigma22\n // These font metrics are extracted from TeX by using tftopl on cmex10.tfm;\n // they correspond to the font parameters of the extension fonts (family 3).\n // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to\n // match cmex7, we'd use cmex7.tfm values for script and scriptscript\n // values.\n defaultRuleThickness: [0.04, 0.049, 0.049],\n // xi8; cmex7: 0.049\n bigOpSpacing1: [0.111, 0.111, 0.111],\n // xi9\n bigOpSpacing2: [0.166, 0.166, 0.166],\n // xi10\n bigOpSpacing3: [0.2, 0.2, 0.2],\n // xi11\n bigOpSpacing4: [0.6, 0.611, 0.611],\n // xi12; cmex7: 0.611\n bigOpSpacing5: [0.1, 0.143, 0.143],\n // xi13; cmex7: 0.143\n // The \\sqrt rule width is taken from the height of the surd character.\n // Since we use the same font at all sizes, this thickness doesn't scale.\n sqrtRuleThickness: [0.04, 0.04, 0.04],\n // This value determines how large a pt is, for metrics which are defined\n // in terms of pts.\n // This value is also used in katex.scss; if you change it make sure the\n // values match.\n ptPerEm: [10.0, 10.0, 10.0],\n // The space between adjacent `|` columns in an array definition. From\n // `\\showthe\\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm.\n doubleRuleSep: [0.2, 0.2, 0.2],\n // The width of separator lines in {array} environments. From\n // `\\showthe\\arrayrulewidth` in LaTeX. Equals 0.4 / ptPerEm.\n arrayRuleWidth: [0.04, 0.04, 0.04],\n // Two values from LaTeX source2e:\n fboxsep: [0.3, 0.3, 0.3],\n // 3 pt / ptPerEm\n fboxrule: [0.04, 0.04, 0.04] // 0.4 pt / ptPerEm\n\n}; // This map contains a mapping from font name and character code to character\n// metrics, including height, depth, italic correction, and skew (kern from the\n// character to the corresponding \\skewchar)\n// This map is generated via `make metrics`. It should not be changed manually.\n\n // These are very rough approximations. We default to Times New Roman which\n// should have Latin-1 and Cyrillic characters, but may not depending on the\n// operating system. The metrics do not account for extra height from the\n// accents. In the case of Cyrillic characters which have both ascenders and\n// descenders we prefer approximations with ascenders, primarily to prevent\n// the fraction bar or root line from intersecting the glyph.\n// TODO(kevinb) allow union of multiple glyph metrics for better accuracy.\n\nconst extraCharacterMap = {\n // Latin-1\n 'Å': 'A',\n 'Ð': 'D',\n 'Þ': 'o',\n 'å': 'a',\n 'ð': 'd',\n 'þ': 'o',\n // Cyrillic\n 'А': 'A',\n 'Б': 'B',\n 'В': 'B',\n 'Г': 'F',\n 'Д': 'A',\n 'Е': 'E',\n 'Ж': 'K',\n 'З': '3',\n 'И': 'N',\n 'Й': 'N',\n 'К': 'K',\n 'Л': 'N',\n 'М': 'M',\n 'Н': 'H',\n 'О': 'O',\n 'П': 'N',\n 'Р': 'P',\n 'С': 'C',\n 'Т': 'T',\n 'У': 'y',\n 'Ф': 'O',\n 'Х': 'X',\n 'Ц': 'U',\n 'Ч': 'h',\n 'Ш': 'W',\n 'Щ': 'W',\n 'Ъ': 'B',\n 'Ы': 'X',\n 'Ь': 'B',\n 'Э': '3',\n 'Ю': 'X',\n 'Я': 'R',\n 'а': 'a',\n 'б': 'b',\n 'в': 'a',\n 'г': 'r',\n 'д': 'y',\n 'е': 'e',\n 'ж': 'm',\n 'з': 'e',\n 'и': 'n',\n 'й': 'n',\n 'к': 'n',\n 'л': 'n',\n 'м': 'm',\n 'н': 'n',\n 'о': 'o',\n 'п': 'n',\n 'р': 'p',\n 'с': 'c',\n 'т': 'o',\n 'у': 'y',\n 'ф': 'b',\n 'х': 'x',\n 'ц': 'n',\n 'ч': 'n',\n 'ш': 'w',\n 'щ': 'w',\n 'ъ': 'a',\n 'ы': 'm',\n 'ь': 'a',\n 'э': 'e',\n 'ю': 'm',\n 'я': 'r'\n};\n\n/**\n * This function adds new font metrics to default metricMap\n * It can also override existing metrics\n */\nfunction setFontMetrics(fontName, metrics) {\n fontMetricsData[fontName] = metrics;\n}\n/**\n * This function is a convenience function for looking up information in the\n * metricMap table. It takes a character as a string, and a font.\n *\n * Note: the `width` property may be undefined if fontMetricsData.js wasn't\n * built using `Make extended_metrics`.\n */\n\nfunction getCharacterMetrics(character, font, mode) {\n if (!fontMetricsData[font]) {\n throw new Error(\"Font metrics not found for font: \" + font + \".\");\n }\n\n let ch = character.charCodeAt(0);\n let metrics = fontMetricsData[font][ch];\n\n if (!metrics && character[0] in extraCharacterMap) {\n ch = extraCharacterMap[character[0]].charCodeAt(0);\n metrics = fontMetricsData[font][ch];\n }\n\n if (!metrics && mode === 'text') {\n // We don't typically have font metrics for Asian scripts.\n // But since we support them in text mode, we need to return\n // some sort of metrics.\n // So if the character is in a script we support but we\n // don't have metrics for it, just use the metrics for\n // the Latin capital letter M. This is close enough because\n // we (currently) only care about the height of the glyph\n // not its width.\n if (supportedCodepoint(ch)) {\n metrics = fontMetricsData[font][77]; // 77 is the charcode for 'M'\n }\n }\n\n if (metrics) {\n return {\n depth: metrics[0],\n height: metrics[1],\n italic: metrics[2],\n skew: metrics[3],\n width: metrics[4]\n };\n }\n}\nconst fontMetricsBySizeIndex = {};\n/**\n * Get the font metrics for a given size.\n */\n\nfunction getGlobalMetrics(size) {\n let sizeIndex;\n\n if (size >= 5) {\n sizeIndex = 0;\n } else if (size >= 3) {\n sizeIndex = 1;\n } else {\n sizeIndex = 2;\n }\n\n if (!fontMetricsBySizeIndex[sizeIndex]) {\n const metrics = fontMetricsBySizeIndex[sizeIndex] = {\n cssEmPerMu: sigmasAndXis.quad[sizeIndex] / 18\n };\n\n for (const key in sigmasAndXis) {\n if (sigmasAndXis.hasOwnProperty(key)) {\n metrics[key] = sigmasAndXis[key][sizeIndex];\n }\n }\n }\n\n return fontMetricsBySizeIndex[sizeIndex];\n}\n;// CONCATENATED MODULE: ./src/Options.js\n/**\n * This file contains information about the options that the Parser carries\n * around with it while parsing. Data is held in an `Options` object, and when\n * recursing, a new `Options` object can be created with the `.with*` and\n * `.reset` functions.\n */\n\nconst sizeStyleMap = [// Each element contains [textsize, scriptsize, scriptscriptsize].\n// The size mappings are taken from TeX with \\normalsize=10pt.\n[1, 1, 1], // size1: [5, 5, 5] \\tiny\n[2, 1, 1], // size2: [6, 5, 5]\n[3, 1, 1], // size3: [7, 5, 5] \\scriptsize\n[4, 2, 1], // size4: [8, 6, 5] \\footnotesize\n[5, 2, 1], // size5: [9, 6, 5] \\small\n[6, 3, 1], // size6: [10, 7, 5] \\normalsize\n[7, 4, 2], // size7: [12, 8, 6] \\large\n[8, 6, 3], // size8: [14.4, 10, 7] \\Large\n[9, 7, 6], // size9: [17.28, 12, 10] \\LARGE\n[10, 8, 7], // size10: [20.74, 14.4, 12] \\huge\n[11, 10, 9] // size11: [24.88, 20.74, 17.28] \\HUGE\n];\nconst sizeMultipliers = [// fontMetrics.js:getGlobalMetrics also uses size indexes, so if\n// you change size indexes, change that function.\n0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.44, 1.728, 2.074, 2.488];\n\nconst sizeAtStyle = function (size, style) {\n return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1];\n}; // In these types, \"\" (empty string) means \"no change\".\n\n\n/**\n * This is the main options class. It contains the current style, size, color,\n * and font.\n *\n * Options objects should not be modified. To create a new Options with\n * different properties, call a `.having*` method.\n */\nclass Options {\n // A font family applies to a group of fonts (i.e. SansSerif), while a font\n // represents a specific font (i.e. SansSerif Bold).\n // See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm\n\n /**\n * The base size index.\n */\n constructor(data) {\n this.style = void 0;\n this.color = void 0;\n this.size = void 0;\n this.textSize = void 0;\n this.phantom = void 0;\n this.font = void 0;\n this.fontFamily = void 0;\n this.fontWeight = void 0;\n this.fontShape = void 0;\n this.sizeMultiplier = void 0;\n this.maxSize = void 0;\n this.minRuleThickness = void 0;\n this._fontMetrics = void 0;\n this.style = data.style;\n this.color = data.color;\n this.size = data.size || Options.BASESIZE;\n this.textSize = data.textSize || this.size;\n this.phantom = !!data.phantom;\n this.font = data.font || \"\";\n this.fontFamily = data.fontFamily || \"\";\n this.fontWeight = data.fontWeight || '';\n this.fontShape = data.fontShape || '';\n this.sizeMultiplier = sizeMultipliers[this.size - 1];\n this.maxSize = data.maxSize;\n this.minRuleThickness = data.minRuleThickness;\n this._fontMetrics = undefined;\n }\n /**\n * Returns a new options object with the same properties as \"this\". Properties\n * from \"extension\" will be copied to the new options object.\n */\n\n\n extend(extension) {\n const data = {\n style: this.style,\n size: this.size,\n textSize: this.textSize,\n color: this.color,\n phantom: this.phantom,\n font: this.font,\n fontFamily: this.fontFamily,\n fontWeight: this.fontWeight,\n fontShape: this.fontShape,\n maxSize: this.maxSize,\n minRuleThickness: this.minRuleThickness\n };\n\n for (const key in extension) {\n if (extension.hasOwnProperty(key)) {\n data[key] = extension[key];\n }\n }\n\n return new Options(data);\n }\n /**\n * Return an options object with the given style. If `this.style === style`,\n * returns `this`.\n */\n\n\n havingStyle(style) {\n if (this.style === style) {\n return this;\n } else {\n return this.extend({\n style: style,\n size: sizeAtStyle(this.textSize, style)\n });\n }\n }\n /**\n * Return an options object with a cramped version of the current style. If\n * the current style is cramped, returns `this`.\n */\n\n\n havingCrampedStyle() {\n return this.havingStyle(this.style.cramp());\n }\n /**\n * Return an options object with the given size and in at least `\\textstyle`.\n * Returns `this` if appropriate.\n */\n\n\n havingSize(size) {\n if (this.size === size && this.textSize === size) {\n return this;\n } else {\n return this.extend({\n style: this.style.text(),\n size: size,\n textSize: size,\n sizeMultiplier: sizeMultipliers[size - 1]\n });\n }\n }\n /**\n * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted,\n * changes to at least `\\textstyle`.\n */\n\n\n havingBaseStyle(style) {\n style = style || this.style.text();\n const wantSize = sizeAtStyle(Options.BASESIZE, style);\n\n if (this.size === wantSize && this.textSize === Options.BASESIZE && this.style === style) {\n return this;\n } else {\n return this.extend({\n style: style,\n size: wantSize\n });\n }\n }\n /**\n * Remove the effect of sizing changes such as \\Huge.\n * Keep the effect of the current style, such as \\scriptstyle.\n */\n\n\n havingBaseSizing() {\n let size;\n\n switch (this.style.id) {\n case 4:\n case 5:\n size = 3; // normalsize in scriptstyle\n\n break;\n\n case 6:\n case 7:\n size = 1; // normalsize in scriptscriptstyle\n\n break;\n\n default:\n size = 6;\n // normalsize in textstyle or displaystyle\n }\n\n return this.extend({\n style: this.style.text(),\n size: size\n });\n }\n /**\n * Create a new options object with the given color.\n */\n\n\n withColor(color) {\n return this.extend({\n color: color\n });\n }\n /**\n * Create a new options object with \"phantom\" set to true.\n */\n\n\n withPhantom() {\n return this.extend({\n phantom: true\n });\n }\n /**\n * Creates a new options object with the given math font or old text font.\n * @type {[type]}\n */\n\n\n withFont(font) {\n return this.extend({\n font\n });\n }\n /**\n * Create a new options objects with the given fontFamily.\n */\n\n\n withTextFontFamily(fontFamily) {\n return this.extend({\n fontFamily,\n font: \"\"\n });\n }\n /**\n * Creates a new options object with the given font weight\n */\n\n\n withTextFontWeight(fontWeight) {\n return this.extend({\n fontWeight,\n font: \"\"\n });\n }\n /**\n * Creates a new options object with the given font weight\n */\n\n\n withTextFontShape(fontShape) {\n return this.extend({\n fontShape,\n font: \"\"\n });\n }\n /**\n * Return the CSS sizing classes required to switch from enclosing options\n * `oldOptions` to `this`. Returns an array of classes.\n */\n\n\n sizingClasses(oldOptions) {\n if (oldOptions.size !== this.size) {\n return [\"sizing\", \"reset-size\" + oldOptions.size, \"size\" + this.size];\n } else {\n return [];\n }\n }\n /**\n * Return the CSS sizing classes required to switch to the base size. Like\n * `this.havingSize(BASESIZE).sizingClasses(this)`.\n */\n\n\n baseSizingClasses() {\n if (this.size !== Options.BASESIZE) {\n return [\"sizing\", \"reset-size\" + this.size, \"size\" + Options.BASESIZE];\n } else {\n return [];\n }\n }\n /**\n * Return the font metrics for this size.\n */\n\n\n fontMetrics() {\n if (!this._fontMetrics) {\n this._fontMetrics = getGlobalMetrics(this.size);\n }\n\n return this._fontMetrics;\n }\n /**\n * Gets the CSS color of the current options object\n */\n\n\n getColor() {\n if (this.phantom) {\n return \"transparent\";\n } else {\n return this.color;\n }\n }\n\n}\n\nOptions.BASESIZE = 6;\n/* harmony default export */ var src_Options = (Options);\n;// CONCATENATED MODULE: ./src/units.js\n/**\n * This file does conversion between units. In particular, it provides\n * calculateSize to convert other units into ems.\n */\n\n // This table gives the number of TeX pts in one of each *absolute* TeX unit.\n// Thus, multiplying a length by this number converts the length from units\n// into pts. Dividing the result by ptPerEm gives the number of ems\n// *assuming* a font size of ptPerEm (normal size, normal style).\n\nconst ptPerUnit = {\n // https://en.wikibooks.org/wiki/LaTeX/Lengths and\n // https://tex.stackexchange.com/a/8263\n \"pt\": 1,\n // TeX point\n \"mm\": 7227 / 2540,\n // millimeter\n \"cm\": 7227 / 254,\n // centimeter\n \"in\": 72.27,\n // inch\n \"bp\": 803 / 800,\n // big (PostScript) points\n \"pc\": 12,\n // pica\n \"dd\": 1238 / 1157,\n // didot\n \"cc\": 14856 / 1157,\n // cicero (12 didot)\n \"nd\": 685 / 642,\n // new didot\n \"nc\": 1370 / 107,\n // new cicero (12 new didot)\n \"sp\": 1 / 65536,\n // scaled point (TeX's internal smallest unit)\n // https://tex.stackexchange.com/a/41371\n \"px\": 803 / 800 // \\pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX\n\n}; // Dictionary of relative units, for fast validity testing.\n\nconst relativeUnit = {\n \"ex\": true,\n \"em\": true,\n \"mu\": true\n};\n\n/**\n * Determine whether the specified unit (either a string defining the unit\n * or a \"size\" parse node containing a unit field) is valid.\n */\nconst validUnit = function (unit) {\n if (typeof unit !== \"string\") {\n unit = unit.unit;\n }\n\n return unit in ptPerUnit || unit in relativeUnit || unit === \"ex\";\n};\n/*\n * Convert a \"size\" parse node (with numeric \"number\" and string \"unit\" fields,\n * as parsed by functions.js argType \"size\") into a CSS em value for the\n * current style/scale. `options` gives the current options.\n */\n\nconst calculateSize = function (sizeValue, options) {\n let scale;\n\n if (sizeValue.unit in ptPerUnit) {\n // Absolute units\n scale = ptPerUnit[sizeValue.unit] // Convert unit to pt\n / options.fontMetrics().ptPerEm // Convert pt to CSS em\n / options.sizeMultiplier; // Unscale to make absolute units\n } else if (sizeValue.unit === \"mu\") {\n // `mu` units scale with scriptstyle/scriptscriptstyle.\n scale = options.fontMetrics().cssEmPerMu;\n } else {\n // Other relative units always refer to the *textstyle* font\n // in the current size.\n let unitOptions;\n\n if (options.style.isTight()) {\n // isTight() means current style is script/scriptscript.\n unitOptions = options.havingStyle(options.style.text());\n } else {\n unitOptions = options;\n } // TODO: In TeX these units are relative to the quad of the current\n // *text* font, e.g. cmr10. KaTeX instead uses values from the\n // comparably-sized *Computer Modern symbol* font. At 10pt, these\n // match. At 7pt and 5pt, they differ: cmr7=1.138894, cmsy7=1.170641;\n // cmr5=1.361133, cmsy5=1.472241. Consider $\\scriptsize a\\kern1emb$.\n // TeX \\showlists shows a kern of 1.13889 * fontsize;\n // KaTeX shows a kern of 1.171 * fontsize.\n\n\n if (sizeValue.unit === \"ex\") {\n scale = unitOptions.fontMetrics().xHeight;\n } else if (sizeValue.unit === \"em\") {\n scale = unitOptions.fontMetrics().quad;\n } else {\n throw new src_ParseError(\"Invalid unit: '\" + sizeValue.unit + \"'\");\n }\n\n if (unitOptions !== options) {\n scale *= unitOptions.sizeMultiplier / options.sizeMultiplier;\n }\n }\n\n return Math.min(sizeValue.number * scale, options.maxSize);\n};\n/**\n * Round `n` to 4 decimal places, or to the nearest 1/10,000th em. See\n * https://github.com/KaTeX/KaTeX/pull/2460.\n */\n\nconst makeEm = function (n) {\n return +n.toFixed(4) + \"em\";\n};\n;// CONCATENATED MODULE: ./src/domTree.js\n/**\n * These objects store the data about the DOM nodes we create, as well as some\n * extra data. They can then be transformed into real DOM nodes with the\n * `toNode` function or HTML markup using `toMarkup`. They are useful for both\n * storing extra properties on the nodes, as well as providing a way to easily\n * work with the DOM.\n *\n * Similar functions for working with MathML nodes exist in mathMLTree.js.\n *\n * TODO: refactor `span` and `anchor` into common superclass when\n * target environments support class inheritance\n */\n\n\n\n\n\n\n/**\n * Create an HTML className based on a list of classes. In addition to joining\n * with spaces, we also remove empty classes.\n */\nconst createClass = function (classes) {\n return classes.filter(cls => cls).join(\" \");\n};\n\nconst initNode = function (classes, options, style) {\n this.classes = classes || [];\n this.attributes = {};\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n this.style = style || {};\n\n if (options) {\n if (options.style.isTight()) {\n this.classes.push(\"mtight\");\n }\n\n const color = options.getColor();\n\n if (color) {\n this.style.color = color;\n }\n }\n};\n/**\n * Convert into an HTML node\n */\n\n\nconst toNode = function (tagName) {\n const node = document.createElement(tagName); // Apply the class\n\n node.className = createClass(this.classes); // Apply inline styles\n\n for (const style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n // $FlowFixMe Flow doesn't seem to understand span.style's type.\n node.style[style] = this.style[style];\n }\n } // Apply attributes\n\n\n for (const attr in this.attributes) {\n if (this.attributes.hasOwnProperty(attr)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n } // Append the children, also as HTML nodes\n\n\n for (let i = 0; i < this.children.length; i++) {\n node.appendChild(this.children[i].toNode());\n }\n\n return node;\n};\n/**\n * Convert into an HTML markup string\n */\n\n\nconst toMarkup = function (tagName) {\n let markup = \"<\" + tagName; // Add the class\n\n if (this.classes.length) {\n markup += \" class=\\\"\" + utils.escape(createClass(this.classes)) + \"\\\"\";\n }\n\n let styles = \"\"; // Add the styles, after hyphenation\n\n for (const style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n styles += utils.hyphenate(style) + \":\" + this.style[style] + \";\";\n }\n }\n\n if (styles) {\n markup += \" style=\\\"\" + utils.escape(styles) + \"\\\"\";\n } // Add the attributes\n\n\n for (const attr in this.attributes) {\n if (this.attributes.hasOwnProperty(attr)) {\n markup += \" \" + attr + \"=\\\"\" + utils.escape(this.attributes[attr]) + \"\\\"\";\n }\n }\n\n markup += \">\"; // Add the markup of the children, also as markup\n\n for (let i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n markup += \"\";\n return markup;\n}; // Making the type below exact with all optional fields doesn't work due to\n// - https://github.com/facebook/flow/issues/4582\n// - https://github.com/facebook/flow/issues/5688\n// However, since *all* fields are optional, $Shape<> works as suggested in 5688\n// above.\n// This type does not include all CSS properties. Additional properties should\n// be added as needed.\n\n\n/**\n * This node represents a span node, with a className, a list of children, and\n * an inline style. It also contains information about its height, depth, and\n * maxFontSize.\n *\n * Represents two types with different uses: SvgSpan to wrap an SVG and DomSpan\n * otherwise. This typesafety is important when HTML builders access a span's\n * children.\n */\nclass Span {\n constructor(classes, children, options, style) {\n this.children = void 0;\n this.attributes = void 0;\n this.classes = void 0;\n this.height = void 0;\n this.depth = void 0;\n this.width = void 0;\n this.maxFontSize = void 0;\n this.style = void 0;\n initNode.call(this, classes, options, style);\n this.children = children || [];\n }\n /**\n * Sets an arbitrary attribute on the span. Warning: use this wisely. Not\n * all browsers support attributes the same, and having too many custom\n * attributes is probably bad.\n */\n\n\n setAttribute(attribute, value) {\n this.attributes[attribute] = value;\n }\n\n hasClass(className) {\n return utils.contains(this.classes, className);\n }\n\n toNode() {\n return toNode.call(this, \"span\");\n }\n\n toMarkup() {\n return toMarkup.call(this, \"span\");\n }\n\n}\n/**\n * This node represents an anchor () element with a hyperlink. See `span`\n * for further details.\n */\n\nclass Anchor {\n constructor(href, classes, children, options) {\n this.children = void 0;\n this.attributes = void 0;\n this.classes = void 0;\n this.height = void 0;\n this.depth = void 0;\n this.maxFontSize = void 0;\n this.style = void 0;\n initNode.call(this, classes, options);\n this.children = children || [];\n this.setAttribute('href', href);\n }\n\n setAttribute(attribute, value) {\n this.attributes[attribute] = value;\n }\n\n hasClass(className) {\n return utils.contains(this.classes, className);\n }\n\n toNode() {\n return toNode.call(this, \"a\");\n }\n\n toMarkup() {\n return toMarkup.call(this, \"a\");\n }\n\n}\n/**\n * This node represents an image embed () element.\n */\n\nclass Img {\n constructor(src, alt, style) {\n this.src = void 0;\n this.alt = void 0;\n this.classes = void 0;\n this.height = void 0;\n this.depth = void 0;\n this.maxFontSize = void 0;\n this.style = void 0;\n this.alt = alt;\n this.src = src;\n this.classes = [\"mord\"];\n this.style = style;\n }\n\n hasClass(className) {\n return utils.contains(this.classes, className);\n }\n\n toNode() {\n const node = document.createElement(\"img\");\n node.src = this.src;\n node.alt = this.alt;\n node.className = \"mord\"; // Apply inline styles\n\n for (const style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n // $FlowFixMe\n node.style[style] = this.style[style];\n }\n }\n\n return node;\n }\n\n toMarkup() {\n let markup = \"\\\"\"\";\n return markup;\n }\n\n}\nconst iCombinations = {\n 'î': '\\u0131\\u0302',\n 'ï': '\\u0131\\u0308',\n 'í': '\\u0131\\u0301',\n // 'ī': '\\u0131\\u0304', // enable when we add Extended Latin\n 'ì': '\\u0131\\u0300'\n};\n/**\n * A symbol node contains information about a single symbol. It either renders\n * to a single text node, or a span with a single text node in it, depending on\n * whether it has CSS classes, styles, or needs italic correction.\n */\n\nclass SymbolNode {\n constructor(text, height, depth, italic, skew, width, classes, style) {\n this.text = void 0;\n this.height = void 0;\n this.depth = void 0;\n this.italic = void 0;\n this.skew = void 0;\n this.width = void 0;\n this.maxFontSize = void 0;\n this.classes = void 0;\n this.style = void 0;\n this.text = text;\n this.height = height || 0;\n this.depth = depth || 0;\n this.italic = italic || 0;\n this.skew = skew || 0;\n this.width = width || 0;\n this.classes = classes || [];\n this.style = style || {};\n this.maxFontSize = 0; // Mark text from non-Latin scripts with specific classes so that we\n // can specify which fonts to use. This allows us to render these\n // characters with a serif font in situations where the browser would\n // either default to a sans serif or render a placeholder character.\n // We use CSS class names like cjk_fallback, hangul_fallback and\n // brahmic_fallback. See ./unicodeScripts.js for the set of possible\n // script names\n\n const script = scriptFromCodepoint(this.text.charCodeAt(0));\n\n if (script) {\n this.classes.push(script + \"_fallback\");\n }\n\n if (/[îïíì]/.test(this.text)) {\n // add ī when we add Extended Latin\n this.text = iCombinations[this.text];\n }\n }\n\n hasClass(className) {\n return utils.contains(this.classes, className);\n }\n /**\n * Creates a text node or span from a symbol node. Note that a span is only\n * created if it is needed.\n */\n\n\n toNode() {\n const node = document.createTextNode(this.text);\n let span = null;\n\n if (this.italic > 0) {\n span = document.createElement(\"span\");\n span.style.marginRight = makeEm(this.italic);\n }\n\n if (this.classes.length > 0) {\n span = span || document.createElement(\"span\");\n span.className = createClass(this.classes);\n }\n\n for (const style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n span = span || document.createElement(\"span\"); // $FlowFixMe Flow doesn't seem to understand span.style's type.\n\n span.style[style] = this.style[style];\n }\n }\n\n if (span) {\n span.appendChild(node);\n return span;\n } else {\n return node;\n }\n }\n /**\n * Creates markup for a symbol node.\n */\n\n\n toMarkup() {\n // TODO(alpert): More duplication than I'd like from\n // span.prototype.toMarkup and symbolNode.prototype.toNode...\n let needsSpan = false;\n let markup = \" 0) {\n styles += \"margin-right:\" + this.italic + \"em;\";\n }\n\n for (const style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n styles += utils.hyphenate(style) + \":\" + this.style[style] + \";\";\n }\n }\n\n if (styles) {\n needsSpan = true;\n markup += \" style=\\\"\" + utils.escape(styles) + \"\\\"\";\n }\n\n const escaped = utils.escape(this.text);\n\n if (needsSpan) {\n markup += \">\";\n markup += escaped;\n markup += \"\";\n return markup;\n } else {\n return escaped;\n }\n }\n\n}\n/**\n * SVG nodes are used to render stretchy wide elements.\n */\n\nclass SvgNode {\n constructor(children, attributes) {\n this.children = void 0;\n this.attributes = void 0;\n this.children = children || [];\n this.attributes = attributes || {};\n }\n\n toNode() {\n const svgNS = \"http://www.w3.org/2000/svg\";\n const node = document.createElementNS(svgNS, \"svg\"); // Apply attributes\n\n for (const attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n for (let i = 0; i < this.children.length; i++) {\n node.appendChild(this.children[i].toNode());\n }\n\n return node;\n }\n\n toMarkup() {\n let markup = \"\";\n\n for (let i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n markup += \"\";\n return markup;\n }\n\n}\nclass PathNode {\n constructor(pathName, alternate) {\n this.pathName = void 0;\n this.alternate = void 0;\n this.pathName = pathName;\n this.alternate = alternate; // Used only for \\sqrt, \\phase, & tall delims\n }\n\n toNode() {\n const svgNS = \"http://www.w3.org/2000/svg\";\n const node = document.createElementNS(svgNS, \"path\");\n\n if (this.alternate) {\n node.setAttribute(\"d\", this.alternate);\n } else {\n node.setAttribute(\"d\", path[this.pathName]);\n }\n\n return node;\n }\n\n toMarkup() {\n if (this.alternate) {\n return \"\";\n } else {\n return \"\";\n }\n }\n\n}\nclass LineNode {\n constructor(attributes) {\n this.attributes = void 0;\n this.attributes = attributes || {};\n }\n\n toNode() {\n const svgNS = \"http://www.w3.org/2000/svg\";\n const node = document.createElementNS(svgNS, \"line\"); // Apply attributes\n\n for (const attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n return node;\n }\n\n toMarkup() {\n let markup = \"\";\n return markup;\n }\n\n}\nfunction assertSymbolDomNode(group) {\n if (group instanceof SymbolNode) {\n return group;\n } else {\n throw new Error(\"Expected symbolNode but got \" + String(group) + \".\");\n }\n}\nfunction assertSpan(group) {\n if (group instanceof Span) {\n return group;\n } else {\n throw new Error(\"Expected span but got \" + String(group) + \".\");\n }\n}\n;// CONCATENATED MODULE: ./src/symbols.js\n/**\n * This file holds a list of all no-argument functions and single-character\n * symbols (like 'a' or ';').\n *\n * For each of the symbols, there are three properties they can have:\n * - font (required): the font to be used for this symbol. Either \"main\" (the\n normal font), or \"ams\" (the ams fonts).\n * - group (required): the ParseNode group type the symbol should have (i.e.\n \"textord\", \"mathord\", etc).\n See https://github.com/KaTeX/KaTeX/wiki/Examining-TeX#group-types\n * - replace: the character that this symbol or function should be\n * replaced with (i.e. \"\\phi\" has a replace value of \"\\u03d5\", the phi\n * character in the main font).\n *\n * The outermost map in the table indicates what mode the symbols should be\n * accepted in (e.g. \"math\" or \"text\").\n */\n// Some of these have a \"-token\" suffix since these are also used as `ParseNode`\n// types for raw text tokens, and we want to avoid conflicts with higher-level\n// `ParseNode` types. These `ParseNode`s are constructed within `Parser` by\n// looking up the `symbols` map.\nconst ATOMS = {\n \"bin\": 1,\n \"close\": 1,\n \"inner\": 1,\n \"open\": 1,\n \"punct\": 1,\n \"rel\": 1\n};\nconst NON_ATOMS = {\n \"accent-token\": 1,\n \"mathord\": 1,\n \"op-token\": 1,\n \"spacing\": 1,\n \"textord\": 1\n};\nconst symbols = {\n \"math\": {},\n \"text\": {}\n};\n/* harmony default export */ var src_symbols = (symbols);\n/** `acceptUnicodeChar = true` is only applicable if `replace` is set. */\n\nfunction defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) {\n symbols[mode][name] = {\n font,\n group,\n replace\n };\n\n if (acceptUnicodeChar && replace) {\n symbols[mode][replace] = symbols[mode][name];\n }\n} // Some abbreviations for commonly used strings.\n// This helps minify the code, and also spotting typos using jshint.\n// modes:\n\nconst math = \"math\";\nconst symbols_text = \"text\"; // fonts:\n\nconst main = \"main\";\nconst ams = \"ams\"; // groups:\n\nconst accent = \"accent-token\";\nconst bin = \"bin\";\nconst symbols_close = \"close\";\nconst inner = \"inner\";\nconst mathord = \"mathord\";\nconst op = \"op-token\";\nconst symbols_open = \"open\";\nconst punct = \"punct\";\nconst rel = \"rel\";\nconst spacing = \"spacing\";\nconst textord = \"textord\"; // Now comes the symbol table\n// Relation Symbols\n\ndefineSymbol(math, main, rel, \"\\u2261\", \"\\\\equiv\", true);\ndefineSymbol(math, main, rel, \"\\u227a\", \"\\\\prec\", true);\ndefineSymbol(math, main, rel, \"\\u227b\", \"\\\\succ\", true);\ndefineSymbol(math, main, rel, \"\\u223c\", \"\\\\sim\", true);\ndefineSymbol(math, main, rel, \"\\u22a5\", \"\\\\perp\");\ndefineSymbol(math, main, rel, \"\\u2aaf\", \"\\\\preceq\", true);\ndefineSymbol(math, main, rel, \"\\u2ab0\", \"\\\\succeq\", true);\ndefineSymbol(math, main, rel, \"\\u2243\", \"\\\\simeq\", true);\ndefineSymbol(math, main, rel, \"\\u2223\", \"\\\\mid\", true);\ndefineSymbol(math, main, rel, \"\\u226a\", \"\\\\ll\", true);\ndefineSymbol(math, main, rel, \"\\u226b\", \"\\\\gg\", true);\ndefineSymbol(math, main, rel, \"\\u224d\", \"\\\\asymp\", true);\ndefineSymbol(math, main, rel, \"\\u2225\", \"\\\\parallel\");\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\bowtie\", true);\ndefineSymbol(math, main, rel, \"\\u2323\", \"\\\\smile\", true);\ndefineSymbol(math, main, rel, \"\\u2291\", \"\\\\sqsubseteq\", true);\ndefineSymbol(math, main, rel, \"\\u2292\", \"\\\\sqsupseteq\", true);\ndefineSymbol(math, main, rel, \"\\u2250\", \"\\\\doteq\", true);\ndefineSymbol(math, main, rel, \"\\u2322\", \"\\\\frown\", true);\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\ni\", true);\ndefineSymbol(math, main, rel, \"\\u221d\", \"\\\\propto\", true);\ndefineSymbol(math, main, rel, \"\\u22a2\", \"\\\\vdash\", true);\ndefineSymbol(math, main, rel, \"\\u22a3\", \"\\\\dashv\", true);\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\owns\"); // Punctuation\n\ndefineSymbol(math, main, punct, \"\\u002e\", \"\\\\ldotp\");\ndefineSymbol(math, main, punct, \"\\u22c5\", \"\\\\cdotp\"); // Misc Symbols\n\ndefineSymbol(math, main, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(symbols_text, main, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(math, main, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(symbols_text, main, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(math, main, textord, \"\\u2135\", \"\\\\aleph\", true);\ndefineSymbol(math, main, textord, \"\\u2200\", \"\\\\forall\", true);\ndefineSymbol(math, main, textord, \"\\u210f\", \"\\\\hbar\", true);\ndefineSymbol(math, main, textord, \"\\u2203\", \"\\\\exists\", true);\ndefineSymbol(math, main, textord, \"\\u2207\", \"\\\\nabla\", true);\ndefineSymbol(math, main, textord, \"\\u266d\", \"\\\\flat\", true);\ndefineSymbol(math, main, textord, \"\\u2113\", \"\\\\ell\", true);\ndefineSymbol(math, main, textord, \"\\u266e\", \"\\\\natural\", true);\ndefineSymbol(math, main, textord, \"\\u2663\", \"\\\\clubsuit\", true);\ndefineSymbol(math, main, textord, \"\\u2118\", \"\\\\wp\", true);\ndefineSymbol(math, main, textord, \"\\u266f\", \"\\\\sharp\", true);\ndefineSymbol(math, main, textord, \"\\u2662\", \"\\\\diamondsuit\", true);\ndefineSymbol(math, main, textord, \"\\u211c\", \"\\\\Re\", true);\ndefineSymbol(math, main, textord, \"\\u2661\", \"\\\\heartsuit\", true);\ndefineSymbol(math, main, textord, \"\\u2111\", \"\\\\Im\", true);\ndefineSymbol(math, main, textord, \"\\u2660\", \"\\\\spadesuit\", true);\ndefineSymbol(math, main, textord, \"\\u00a7\", \"\\\\S\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u00a7\", \"\\\\S\");\ndefineSymbol(math, main, textord, \"\\u00b6\", \"\\\\P\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u00b6\", \"\\\\P\"); // Math and Text\n\ndefineSymbol(math, main, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(symbols_text, main, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(symbols_text, main, textord, \"\\u2020\", \"\\\\textdagger\");\ndefineSymbol(math, main, textord, \"\\u2021\", \"\\\\ddag\");\ndefineSymbol(symbols_text, main, textord, \"\\u2021\", \"\\\\ddag\");\ndefineSymbol(symbols_text, main, textord, \"\\u2021\", \"\\\\textdaggerdbl\"); // Large Delimiters\n\ndefineSymbol(math, main, symbols_close, \"\\u23b1\", \"\\\\rmoustache\", true);\ndefineSymbol(math, main, symbols_open, \"\\u23b0\", \"\\\\lmoustache\", true);\ndefineSymbol(math, main, symbols_close, \"\\u27ef\", \"\\\\rgroup\", true);\ndefineSymbol(math, main, symbols_open, \"\\u27ee\", \"\\\\lgroup\", true); // Binary Operators\n\ndefineSymbol(math, main, bin, \"\\u2213\", \"\\\\mp\", true);\ndefineSymbol(math, main, bin, \"\\u2296\", \"\\\\ominus\", true);\ndefineSymbol(math, main, bin, \"\\u228e\", \"\\\\uplus\", true);\ndefineSymbol(math, main, bin, \"\\u2293\", \"\\\\sqcap\", true);\ndefineSymbol(math, main, bin, \"\\u2217\", \"\\\\ast\");\ndefineSymbol(math, main, bin, \"\\u2294\", \"\\\\sqcup\", true);\ndefineSymbol(math, main, bin, \"\\u25ef\", \"\\\\bigcirc\", true);\ndefineSymbol(math, main, bin, \"\\u2219\", \"\\\\bullet\", true);\ndefineSymbol(math, main, bin, \"\\u2021\", \"\\\\ddagger\");\ndefineSymbol(math, main, bin, \"\\u2240\", \"\\\\wr\", true);\ndefineSymbol(math, main, bin, \"\\u2a3f\", \"\\\\amalg\");\ndefineSymbol(math, main, bin, \"\\u0026\", \"\\\\And\"); // from amsmath\n// Arrow Symbols\n\ndefineSymbol(math, main, rel, \"\\u27f5\", \"\\\\longleftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d0\", \"\\\\Leftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f8\", \"\\\\Longleftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f6\", \"\\\\longrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d2\", \"\\\\Rightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f9\", \"\\\\Longrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2194\", \"\\\\leftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f7\", \"\\\\longleftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d4\", \"\\\\Leftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27fa\", \"\\\\Longleftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21a6\", \"\\\\mapsto\", true);\ndefineSymbol(math, main, rel, \"\\u27fc\", \"\\\\longmapsto\", true);\ndefineSymbol(math, main, rel, \"\\u2197\", \"\\\\nearrow\", true);\ndefineSymbol(math, main, rel, \"\\u21a9\", \"\\\\hookleftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21aa\", \"\\\\hookrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2198\", \"\\\\searrow\", true);\ndefineSymbol(math, main, rel, \"\\u21bc\", \"\\\\leftharpoonup\", true);\ndefineSymbol(math, main, rel, \"\\u21c0\", \"\\\\rightharpoonup\", true);\ndefineSymbol(math, main, rel, \"\\u2199\", \"\\\\swarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21bd\", \"\\\\leftharpoondown\", true);\ndefineSymbol(math, main, rel, \"\\u21c1\", \"\\\\rightharpoondown\", true);\ndefineSymbol(math, main, rel, \"\\u2196\", \"\\\\nwarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21cc\", \"\\\\rightleftharpoons\", true); // AMS Negated Binary Relations\n\ndefineSymbol(math, ams, rel, \"\\u226e\", \"\\\\nless\", true); // Symbol names preceded by \"@\" each have a corresponding macro.\n\ndefineSymbol(math, ams, rel, \"\\ue010\", \"\\\\@nleqslant\");\ndefineSymbol(math, ams, rel, \"\\ue011\", \"\\\\@nleqq\");\ndefineSymbol(math, ams, rel, \"\\u2a87\", \"\\\\lneq\", true);\ndefineSymbol(math, ams, rel, \"\\u2268\", \"\\\\lneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue00c\", \"\\\\@lvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e6\", \"\\\\lnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a89\", \"\\\\lnapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u2280\", \"\\\\nprec\", true); // unicode-math maps \\u22e0 to \\npreccurlyeq. We'll use the AMS synonym.\n\ndefineSymbol(math, ams, rel, \"\\u22e0\", \"\\\\npreceq\", true);\ndefineSymbol(math, ams, rel, \"\\u22e8\", \"\\\\precnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab9\", \"\\\\precnapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u2241\", \"\\\\nsim\", true);\ndefineSymbol(math, ams, rel, \"\\ue006\", \"\\\\@nshortmid\");\ndefineSymbol(math, ams, rel, \"\\u2224\", \"\\\\nmid\", true);\ndefineSymbol(math, ams, rel, \"\\u22ac\", \"\\\\nvdash\", true);\ndefineSymbol(math, ams, rel, \"\\u22ad\", \"\\\\nvDash\", true);\ndefineSymbol(math, ams, rel, \"\\u22ea\", \"\\\\ntriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22ec\", \"\\\\ntrianglelefteq\", true);\ndefineSymbol(math, ams, rel, \"\\u228a\", \"\\\\subsetneq\", true);\ndefineSymbol(math, ams, rel, \"\\ue01a\", \"\\\\@varsubsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acb\", \"\\\\subsetneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue017\", \"\\\\@varsubsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u226f\", \"\\\\ngtr\", true);\ndefineSymbol(math, ams, rel, \"\\ue00f\", \"\\\\@ngeqslant\");\ndefineSymbol(math, ams, rel, \"\\ue00e\", \"\\\\@ngeqq\");\ndefineSymbol(math, ams, rel, \"\\u2a88\", \"\\\\gneq\", true);\ndefineSymbol(math, ams, rel, \"\\u2269\", \"\\\\gneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue00d\", \"\\\\@gvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e7\", \"\\\\gnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a8a\", \"\\\\gnapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u2281\", \"\\\\nsucc\", true); // unicode-math maps \\u22e1 to \\nsucccurlyeq. We'll use the AMS synonym.\n\ndefineSymbol(math, ams, rel, \"\\u22e1\", \"\\\\nsucceq\", true);\ndefineSymbol(math, ams, rel, \"\\u22e9\", \"\\\\succnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2aba\", \"\\\\succnapprox\", true); // unicode-math maps \\u2246 to \\simneqq. We'll use the AMS synonym.\n\ndefineSymbol(math, ams, rel, \"\\u2246\", \"\\\\ncong\", true);\ndefineSymbol(math, ams, rel, \"\\ue007\", \"\\\\@nshortparallel\");\ndefineSymbol(math, ams, rel, \"\\u2226\", \"\\\\nparallel\", true);\ndefineSymbol(math, ams, rel, \"\\u22af\", \"\\\\nVDash\", true);\ndefineSymbol(math, ams, rel, \"\\u22eb\", \"\\\\ntriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22ed\", \"\\\\ntrianglerighteq\", true);\ndefineSymbol(math, ams, rel, \"\\ue018\", \"\\\\@nsupseteqq\");\ndefineSymbol(math, ams, rel, \"\\u228b\", \"\\\\supsetneq\", true);\ndefineSymbol(math, ams, rel, \"\\ue01b\", \"\\\\@varsupsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acc\", \"\\\\supsetneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue019\", \"\\\\@varsupsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u22ae\", \"\\\\nVdash\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab5\", \"\\\\precneqq\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab6\", \"\\\\succneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue016\", \"\\\\@nsubseteqq\");\ndefineSymbol(math, ams, bin, \"\\u22b4\", \"\\\\unlhd\");\ndefineSymbol(math, ams, bin, \"\\u22b5\", \"\\\\unrhd\"); // AMS Negated Arrows\n\ndefineSymbol(math, ams, rel, \"\\u219a\", \"\\\\nleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u219b\", \"\\\\nrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21cd\", \"\\\\nLeftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21cf\", \"\\\\nRightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21ae\", \"\\\\nleftrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21ce\", \"\\\\nLeftrightarrow\", true); // AMS Misc\n\ndefineSymbol(math, ams, rel, \"\\u25b3\", \"\\\\vartriangle\");\ndefineSymbol(math, ams, textord, \"\\u210f\", \"\\\\hslash\");\ndefineSymbol(math, ams, textord, \"\\u25bd\", \"\\\\triangledown\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\lozenge\");\ndefineSymbol(math, ams, textord, \"\\u24c8\", \"\\\\circledS\");\ndefineSymbol(math, ams, textord, \"\\u00ae\", \"\\\\circledR\");\ndefineSymbol(symbols_text, ams, textord, \"\\u00ae\", \"\\\\circledR\");\ndefineSymbol(math, ams, textord, \"\\u2221\", \"\\\\measuredangle\", true);\ndefineSymbol(math, ams, textord, \"\\u2204\", \"\\\\nexists\");\ndefineSymbol(math, ams, textord, \"\\u2127\", \"\\\\mho\");\ndefineSymbol(math, ams, textord, \"\\u2132\", \"\\\\Finv\", true);\ndefineSymbol(math, ams, textord, \"\\u2141\", \"\\\\Game\", true);\ndefineSymbol(math, ams, textord, \"\\u2035\", \"\\\\backprime\");\ndefineSymbol(math, ams, textord, \"\\u25b2\", \"\\\\blacktriangle\");\ndefineSymbol(math, ams, textord, \"\\u25bc\", \"\\\\blacktriangledown\");\ndefineSymbol(math, ams, textord, \"\\u25a0\", \"\\\\blacksquare\");\ndefineSymbol(math, ams, textord, \"\\u29eb\", \"\\\\blacklozenge\");\ndefineSymbol(math, ams, textord, \"\\u2605\", \"\\\\bigstar\");\ndefineSymbol(math, ams, textord, \"\\u2222\", \"\\\\sphericalangle\", true);\ndefineSymbol(math, ams, textord, \"\\u2201\", \"\\\\complement\", true); // unicode-math maps U+F0 to \\matheth. We map to AMS function \\eth\n\ndefineSymbol(math, ams, textord, \"\\u00f0\", \"\\\\eth\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u00f0\", \"\\u00f0\");\ndefineSymbol(math, ams, textord, \"\\u2571\", \"\\\\diagup\");\ndefineSymbol(math, ams, textord, \"\\u2572\", \"\\\\diagdown\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\square\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\Box\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\Diamond\"); // unicode-math maps U+A5 to \\mathyen. We map to AMS function \\yen\n\ndefineSymbol(math, ams, textord, \"\\u00a5\", \"\\\\yen\", true);\ndefineSymbol(symbols_text, ams, textord, \"\\u00a5\", \"\\\\yen\", true);\ndefineSymbol(math, ams, textord, \"\\u2713\", \"\\\\checkmark\", true);\ndefineSymbol(symbols_text, ams, textord, \"\\u2713\", \"\\\\checkmark\"); // AMS Hebrew\n\ndefineSymbol(math, ams, textord, \"\\u2136\", \"\\\\beth\", true);\ndefineSymbol(math, ams, textord, \"\\u2138\", \"\\\\daleth\", true);\ndefineSymbol(math, ams, textord, \"\\u2137\", \"\\\\gimel\", true); // AMS Greek\n\ndefineSymbol(math, ams, textord, \"\\u03dd\", \"\\\\digamma\", true);\ndefineSymbol(math, ams, textord, \"\\u03f0\", \"\\\\varkappa\"); // AMS Delimiters\n\ndefineSymbol(math, ams, symbols_open, \"\\u250c\", \"\\\\@ulcorner\", true);\ndefineSymbol(math, ams, symbols_close, \"\\u2510\", \"\\\\@urcorner\", true);\ndefineSymbol(math, ams, symbols_open, \"\\u2514\", \"\\\\@llcorner\", true);\ndefineSymbol(math, ams, symbols_close, \"\\u2518\", \"\\\\@lrcorner\", true); // AMS Binary Relations\n\ndefineSymbol(math, ams, rel, \"\\u2266\", \"\\\\leqq\", true);\ndefineSymbol(math, ams, rel, \"\\u2a7d\", \"\\\\leqslant\", true);\ndefineSymbol(math, ams, rel, \"\\u2a95\", \"\\\\eqslantless\", true);\ndefineSymbol(math, ams, rel, \"\\u2272\", \"\\\\lesssim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a85\", \"\\\\lessapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u224a\", \"\\\\approxeq\", true);\ndefineSymbol(math, ams, bin, \"\\u22d6\", \"\\\\lessdot\");\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\lll\", true);\ndefineSymbol(math, ams, rel, \"\\u2276\", \"\\\\lessgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u22da\", \"\\\\lesseqgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u2a8b\", \"\\\\lesseqqgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\doteqdot\");\ndefineSymbol(math, ams, rel, \"\\u2253\", \"\\\\risingdotseq\", true);\ndefineSymbol(math, ams, rel, \"\\u2252\", \"\\\\fallingdotseq\", true);\ndefineSymbol(math, ams, rel, \"\\u223d\", \"\\\\backsim\", true);\ndefineSymbol(math, ams, rel, \"\\u22cd\", \"\\\\backsimeq\", true);\ndefineSymbol(math, ams, rel, \"\\u2ac5\", \"\\\\subseteqq\", true);\ndefineSymbol(math, ams, rel, \"\\u22d0\", \"\\\\Subset\", true);\ndefineSymbol(math, ams, rel, \"\\u228f\", \"\\\\sqsubset\", true);\ndefineSymbol(math, ams, rel, \"\\u227c\", \"\\\\preccurlyeq\", true);\ndefineSymbol(math, ams, rel, \"\\u22de\", \"\\\\curlyeqprec\", true);\ndefineSymbol(math, ams, rel, \"\\u227e\", \"\\\\precsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab7\", \"\\\\precapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u22b2\", \"\\\\vartriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22b4\", \"\\\\trianglelefteq\");\ndefineSymbol(math, ams, rel, \"\\u22a8\", \"\\\\vDash\", true);\ndefineSymbol(math, ams, rel, \"\\u22aa\", \"\\\\Vvdash\", true);\ndefineSymbol(math, ams, rel, \"\\u2323\", \"\\\\smallsmile\");\ndefineSymbol(math, ams, rel, \"\\u2322\", \"\\\\smallfrown\");\ndefineSymbol(math, ams, rel, \"\\u224f\", \"\\\\bumpeq\", true);\ndefineSymbol(math, ams, rel, \"\\u224e\", \"\\\\Bumpeq\", true);\ndefineSymbol(math, ams, rel, \"\\u2267\", \"\\\\geqq\", true);\ndefineSymbol(math, ams, rel, \"\\u2a7e\", \"\\\\geqslant\", true);\ndefineSymbol(math, ams, rel, \"\\u2a96\", \"\\\\eqslantgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u2273\", \"\\\\gtrsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a86\", \"\\\\gtrapprox\", true);\ndefineSymbol(math, ams, bin, \"\\u22d7\", \"\\\\gtrdot\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\ggg\", true);\ndefineSymbol(math, ams, rel, \"\\u2277\", \"\\\\gtrless\", true);\ndefineSymbol(math, ams, rel, \"\\u22db\", \"\\\\gtreqless\", true);\ndefineSymbol(math, ams, rel, \"\\u2a8c\", \"\\\\gtreqqless\", true);\ndefineSymbol(math, ams, rel, \"\\u2256\", \"\\\\eqcirc\", true);\ndefineSymbol(math, ams, rel, \"\\u2257\", \"\\\\circeq\", true);\ndefineSymbol(math, ams, rel, \"\\u225c\", \"\\\\triangleq\", true);\ndefineSymbol(math, ams, rel, \"\\u223c\", \"\\\\thicksim\");\ndefineSymbol(math, ams, rel, \"\\u2248\", \"\\\\thickapprox\");\ndefineSymbol(math, ams, rel, \"\\u2ac6\", \"\\\\supseteqq\", true);\ndefineSymbol(math, ams, rel, \"\\u22d1\", \"\\\\Supset\", true);\ndefineSymbol(math, ams, rel, \"\\u2290\", \"\\\\sqsupset\", true);\ndefineSymbol(math, ams, rel, \"\\u227d\", \"\\\\succcurlyeq\", true);\ndefineSymbol(math, ams, rel, \"\\u22df\", \"\\\\curlyeqsucc\", true);\ndefineSymbol(math, ams, rel, \"\\u227f\", \"\\\\succsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab8\", \"\\\\succapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u22b3\", \"\\\\vartriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22b5\", \"\\\\trianglerighteq\");\ndefineSymbol(math, ams, rel, \"\\u22a9\", \"\\\\Vdash\", true);\ndefineSymbol(math, ams, rel, \"\\u2223\", \"\\\\shortmid\");\ndefineSymbol(math, ams, rel, \"\\u2225\", \"\\\\shortparallel\");\ndefineSymbol(math, ams, rel, \"\\u226c\", \"\\\\between\", true);\ndefineSymbol(math, ams, rel, \"\\u22d4\", \"\\\\pitchfork\", true);\ndefineSymbol(math, ams, rel, \"\\u221d\", \"\\\\varpropto\");\ndefineSymbol(math, ams, rel, \"\\u25c0\", \"\\\\blacktriangleleft\"); // unicode-math says that \\therefore is a mathord atom.\n// We kept the amssymb atom type, which is rel.\n\ndefineSymbol(math, ams, rel, \"\\u2234\", \"\\\\therefore\", true);\ndefineSymbol(math, ams, rel, \"\\u220d\", \"\\\\backepsilon\");\ndefineSymbol(math, ams, rel, \"\\u25b6\", \"\\\\blacktriangleright\"); // unicode-math says that \\because is a mathord atom.\n// We kept the amssymb atom type, which is rel.\n\ndefineSymbol(math, ams, rel, \"\\u2235\", \"\\\\because\", true);\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\llless\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\gggtr\");\ndefineSymbol(math, ams, bin, \"\\u22b2\", \"\\\\lhd\");\ndefineSymbol(math, ams, bin, \"\\u22b3\", \"\\\\rhd\");\ndefineSymbol(math, ams, rel, \"\\u2242\", \"\\\\eqsim\", true);\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\Join\");\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\Doteq\", true); // AMS Binary Operators\n\ndefineSymbol(math, ams, bin, \"\\u2214\", \"\\\\dotplus\", true);\ndefineSymbol(math, ams, bin, \"\\u2216\", \"\\\\smallsetminus\");\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\Cap\", true);\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\Cup\", true);\ndefineSymbol(math, ams, bin, \"\\u2a5e\", \"\\\\doublebarwedge\", true);\ndefineSymbol(math, ams, bin, \"\\u229f\", \"\\\\boxminus\", true);\ndefineSymbol(math, ams, bin, \"\\u229e\", \"\\\\boxplus\", true);\ndefineSymbol(math, ams, bin, \"\\u22c7\", \"\\\\divideontimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22c9\", \"\\\\ltimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22ca\", \"\\\\rtimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22cb\", \"\\\\leftthreetimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22cc\", \"\\\\rightthreetimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22cf\", \"\\\\curlywedge\", true);\ndefineSymbol(math, ams, bin, \"\\u22ce\", \"\\\\curlyvee\", true);\ndefineSymbol(math, ams, bin, \"\\u229d\", \"\\\\circleddash\", true);\ndefineSymbol(math, ams, bin, \"\\u229b\", \"\\\\circledast\", true);\ndefineSymbol(math, ams, bin, \"\\u22c5\", \"\\\\centerdot\");\ndefineSymbol(math, ams, bin, \"\\u22ba\", \"\\\\intercal\", true);\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\doublecap\");\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\doublecup\");\ndefineSymbol(math, ams, bin, \"\\u22a0\", \"\\\\boxtimes\", true); // AMS Arrows\n// Note: unicode-math maps \\u21e2 to their own function \\rightdasharrow.\n// We'll map it to AMS function \\dashrightarrow. It produces the same atom.\n\ndefineSymbol(math, ams, rel, \"\\u21e2\", \"\\\\dashrightarrow\", true); // unicode-math maps \\u21e0 to \\leftdasharrow. We'll use the AMS synonym.\n\ndefineSymbol(math, ams, rel, \"\\u21e0\", \"\\\\dashleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21c7\", \"\\\\leftleftarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21c6\", \"\\\\leftrightarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21da\", \"\\\\Lleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u219e\", \"\\\\twoheadleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21a2\", \"\\\\leftarrowtail\", true);\ndefineSymbol(math, ams, rel, \"\\u21ab\", \"\\\\looparrowleft\", true);\ndefineSymbol(math, ams, rel, \"\\u21cb\", \"\\\\leftrightharpoons\", true);\ndefineSymbol(math, ams, rel, \"\\u21b6\", \"\\\\curvearrowleft\", true); // unicode-math maps \\u21ba to \\acwopencirclearrow. We'll use the AMS synonym.\n\ndefineSymbol(math, ams, rel, \"\\u21ba\", \"\\\\circlearrowleft\", true);\ndefineSymbol(math, ams, rel, \"\\u21b0\", \"\\\\Lsh\", true);\ndefineSymbol(math, ams, rel, \"\\u21c8\", \"\\\\upuparrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21bf\", \"\\\\upharpoonleft\", true);\ndefineSymbol(math, ams, rel, \"\\u21c3\", \"\\\\downharpoonleft\", true);\ndefineSymbol(math, main, rel, \"\\u22b6\", \"\\\\origof\", true); // not in font\n\ndefineSymbol(math, main, rel, \"\\u22b7\", \"\\\\imageof\", true); // not in font\n\ndefineSymbol(math, ams, rel, \"\\u22b8\", \"\\\\multimap\", true);\ndefineSymbol(math, ams, rel, \"\\u21ad\", \"\\\\leftrightsquigarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21c9\", \"\\\\rightrightarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21c4\", \"\\\\rightleftarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21a0\", \"\\\\twoheadrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21a3\", \"\\\\rightarrowtail\", true);\ndefineSymbol(math, ams, rel, \"\\u21ac\", \"\\\\looparrowright\", true);\ndefineSymbol(math, ams, rel, \"\\u21b7\", \"\\\\curvearrowright\", true); // unicode-math maps \\u21bb to \\cwopencirclearrow. We'll use the AMS synonym.\n\ndefineSymbol(math, ams, rel, \"\\u21bb\", \"\\\\circlearrowright\", true);\ndefineSymbol(math, ams, rel, \"\\u21b1\", \"\\\\Rsh\", true);\ndefineSymbol(math, ams, rel, \"\\u21ca\", \"\\\\downdownarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\upharpoonright\", true);\ndefineSymbol(math, ams, rel, \"\\u21c2\", \"\\\\downharpoonright\", true);\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\rightsquigarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\leadsto\");\ndefineSymbol(math, ams, rel, \"\\u21db\", \"\\\\Rrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\restriction\");\ndefineSymbol(math, main, textord, \"\\u2018\", \"`\");\ndefineSymbol(math, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(symbols_text, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(symbols_text, main, textord, \"$\", \"\\\\textdollar\");\ndefineSymbol(math, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(symbols_text, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(math, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(symbols_text, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(symbols_text, main, textord, \"_\", \"\\\\textunderscore\");\ndefineSymbol(math, main, textord, \"\\u2220\", \"\\\\angle\", true);\ndefineSymbol(math, main, textord, \"\\u221e\", \"\\\\infty\", true);\ndefineSymbol(math, main, textord, \"\\u2032\", \"\\\\prime\");\ndefineSymbol(math, main, textord, \"\\u25b3\", \"\\\\triangle\");\ndefineSymbol(math, main, textord, \"\\u0393\", \"\\\\Gamma\", true);\ndefineSymbol(math, main, textord, \"\\u0394\", \"\\\\Delta\", true);\ndefineSymbol(math, main, textord, \"\\u0398\", \"\\\\Theta\", true);\ndefineSymbol(math, main, textord, \"\\u039b\", \"\\\\Lambda\", true);\ndefineSymbol(math, main, textord, \"\\u039e\", \"\\\\Xi\", true);\ndefineSymbol(math, main, textord, \"\\u03a0\", \"\\\\Pi\", true);\ndefineSymbol(math, main, textord, \"\\u03a3\", \"\\\\Sigma\", true);\ndefineSymbol(math, main, textord, \"\\u03a5\", \"\\\\Upsilon\", true);\ndefineSymbol(math, main, textord, \"\\u03a6\", \"\\\\Phi\", true);\ndefineSymbol(math, main, textord, \"\\u03a8\", \"\\\\Psi\", true);\ndefineSymbol(math, main, textord, \"\\u03a9\", \"\\\\Omega\", true);\ndefineSymbol(math, main, textord, \"A\", \"\\u0391\");\ndefineSymbol(math, main, textord, \"B\", \"\\u0392\");\ndefineSymbol(math, main, textord, \"E\", \"\\u0395\");\ndefineSymbol(math, main, textord, \"Z\", \"\\u0396\");\ndefineSymbol(math, main, textord, \"H\", \"\\u0397\");\ndefineSymbol(math, main, textord, \"I\", \"\\u0399\");\ndefineSymbol(math, main, textord, \"K\", \"\\u039A\");\ndefineSymbol(math, main, textord, \"M\", \"\\u039C\");\ndefineSymbol(math, main, textord, \"N\", \"\\u039D\");\ndefineSymbol(math, main, textord, \"O\", \"\\u039F\");\ndefineSymbol(math, main, textord, \"P\", \"\\u03A1\");\ndefineSymbol(math, main, textord, \"T\", \"\\u03A4\");\ndefineSymbol(math, main, textord, \"X\", \"\\u03A7\");\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\neg\", true);\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\lnot\");\ndefineSymbol(math, main, textord, \"\\u22a4\", \"\\\\top\");\ndefineSymbol(math, main, textord, \"\\u22a5\", \"\\\\bot\");\ndefineSymbol(math, main, textord, \"\\u2205\", \"\\\\emptyset\");\ndefineSymbol(math, ams, textord, \"\\u2205\", \"\\\\varnothing\");\ndefineSymbol(math, main, mathord, \"\\u03b1\", \"\\\\alpha\", true);\ndefineSymbol(math, main, mathord, \"\\u03b2\", \"\\\\beta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b3\", \"\\\\gamma\", true);\ndefineSymbol(math, main, mathord, \"\\u03b4\", \"\\\\delta\", true);\ndefineSymbol(math, main, mathord, \"\\u03f5\", \"\\\\epsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03b6\", \"\\\\zeta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b7\", \"\\\\eta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b8\", \"\\\\theta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b9\", \"\\\\iota\", true);\ndefineSymbol(math, main, mathord, \"\\u03ba\", \"\\\\kappa\", true);\ndefineSymbol(math, main, mathord, \"\\u03bb\", \"\\\\lambda\", true);\ndefineSymbol(math, main, mathord, \"\\u03bc\", \"\\\\mu\", true);\ndefineSymbol(math, main, mathord, \"\\u03bd\", \"\\\\nu\", true);\ndefineSymbol(math, main, mathord, \"\\u03be\", \"\\\\xi\", true);\ndefineSymbol(math, main, mathord, \"\\u03bf\", \"\\\\omicron\", true);\ndefineSymbol(math, main, mathord, \"\\u03c0\", \"\\\\pi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c1\", \"\\\\rho\", true);\ndefineSymbol(math, main, mathord, \"\\u03c3\", \"\\\\sigma\", true);\ndefineSymbol(math, main, mathord, \"\\u03c4\", \"\\\\tau\", true);\ndefineSymbol(math, main, mathord, \"\\u03c5\", \"\\\\upsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03d5\", \"\\\\phi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c7\", \"\\\\chi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c8\", \"\\\\psi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c9\", \"\\\\omega\", true);\ndefineSymbol(math, main, mathord, \"\\u03b5\", \"\\\\varepsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03d1\", \"\\\\vartheta\", true);\ndefineSymbol(math, main, mathord, \"\\u03d6\", \"\\\\varpi\", true);\ndefineSymbol(math, main, mathord, \"\\u03f1\", \"\\\\varrho\", true);\ndefineSymbol(math, main, mathord, \"\\u03c2\", \"\\\\varsigma\", true);\ndefineSymbol(math, main, mathord, \"\\u03c6\", \"\\\\varphi\", true);\ndefineSymbol(math, main, bin, \"\\u2217\", \"*\", true);\ndefineSymbol(math, main, bin, \"+\", \"+\");\ndefineSymbol(math, main, bin, \"\\u2212\", \"-\", true);\ndefineSymbol(math, main, bin, \"\\u22c5\", \"\\\\cdot\", true);\ndefineSymbol(math, main, bin, \"\\u2218\", \"\\\\circ\", true);\ndefineSymbol(math, main, bin, \"\\u00f7\", \"\\\\div\", true);\ndefineSymbol(math, main, bin, \"\\u00b1\", \"\\\\pm\", true);\ndefineSymbol(math, main, bin, \"\\u00d7\", \"\\\\times\", true);\ndefineSymbol(math, main, bin, \"\\u2229\", \"\\\\cap\", true);\ndefineSymbol(math, main, bin, \"\\u222a\", \"\\\\cup\", true);\ndefineSymbol(math, main, bin, \"\\u2216\", \"\\\\setminus\", true);\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\land\");\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\lor\");\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\wedge\", true);\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\vee\", true);\ndefineSymbol(math, main, textord, \"\\u221a\", \"\\\\surd\");\ndefineSymbol(math, main, symbols_open, \"\\u27e8\", \"\\\\langle\", true);\ndefineSymbol(math, main, symbols_open, \"\\u2223\", \"\\\\lvert\");\ndefineSymbol(math, main, symbols_open, \"\\u2225\", \"\\\\lVert\");\ndefineSymbol(math, main, symbols_close, \"?\", \"?\");\ndefineSymbol(math, main, symbols_close, \"!\", \"!\");\ndefineSymbol(math, main, symbols_close, \"\\u27e9\", \"\\\\rangle\", true);\ndefineSymbol(math, main, symbols_close, \"\\u2223\", \"\\\\rvert\");\ndefineSymbol(math, main, symbols_close, \"\\u2225\", \"\\\\rVert\");\ndefineSymbol(math, main, rel, \"=\", \"=\");\ndefineSymbol(math, main, rel, \":\", \":\");\ndefineSymbol(math, main, rel, \"\\u2248\", \"\\\\approx\", true);\ndefineSymbol(math, main, rel, \"\\u2245\", \"\\\\cong\", true);\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\ge\");\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\geq\", true);\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\gets\");\ndefineSymbol(math, main, rel, \">\", \"\\\\gt\", true);\ndefineSymbol(math, main, rel, \"\\u2208\", \"\\\\in\", true);\ndefineSymbol(math, main, rel, \"\\ue020\", \"\\\\@not\");\ndefineSymbol(math, main, rel, \"\\u2282\", \"\\\\subset\", true);\ndefineSymbol(math, main, rel, \"\\u2283\", \"\\\\supset\", true);\ndefineSymbol(math, main, rel, \"\\u2286\", \"\\\\subseteq\", true);\ndefineSymbol(math, main, rel, \"\\u2287\", \"\\\\supseteq\", true);\ndefineSymbol(math, ams, rel, \"\\u2288\", \"\\\\nsubseteq\", true);\ndefineSymbol(math, ams, rel, \"\\u2289\", \"\\\\nsupseteq\", true);\ndefineSymbol(math, main, rel, \"\\u22a8\", \"\\\\models\");\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\leftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\le\");\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\leq\", true);\ndefineSymbol(math, main, rel, \"<\", \"\\\\lt\", true);\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\rightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\to\");\ndefineSymbol(math, ams, rel, \"\\u2271\", \"\\\\ngeq\", true);\ndefineSymbol(math, ams, rel, \"\\u2270\", \"\\\\nleq\", true);\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\space\"); // Ref: LaTeX Source 2e: \\DeclareRobustCommand{\\nobreakspace}{%\n\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\nobreakspace\");\ndefineSymbol(symbols_text, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(symbols_text, main, spacing, \"\\u00a0\", \" \");\ndefineSymbol(symbols_text, main, spacing, \"\\u00a0\", \"\\\\space\");\ndefineSymbol(symbols_text, main, spacing, \"\\u00a0\", \"\\\\nobreakspace\");\ndefineSymbol(math, main, spacing, null, \"\\\\nobreak\");\ndefineSymbol(math, main, spacing, null, \"\\\\allowbreak\");\ndefineSymbol(math, main, punct, \",\", \",\");\ndefineSymbol(math, main, punct, \";\", \";\");\ndefineSymbol(math, ams, bin, \"\\u22bc\", \"\\\\barwedge\", true);\ndefineSymbol(math, ams, bin, \"\\u22bb\", \"\\\\veebar\", true);\ndefineSymbol(math, main, bin, \"\\u2299\", \"\\\\odot\", true);\ndefineSymbol(math, main, bin, \"\\u2295\", \"\\\\oplus\", true);\ndefineSymbol(math, main, bin, \"\\u2297\", \"\\\\otimes\", true);\ndefineSymbol(math, main, textord, \"\\u2202\", \"\\\\partial\", true);\ndefineSymbol(math, main, bin, \"\\u2298\", \"\\\\oslash\", true);\ndefineSymbol(math, ams, bin, \"\\u229a\", \"\\\\circledcirc\", true);\ndefineSymbol(math, ams, bin, \"\\u22a1\", \"\\\\boxdot\", true);\ndefineSymbol(math, main, bin, \"\\u25b3\", \"\\\\bigtriangleup\");\ndefineSymbol(math, main, bin, \"\\u25bd\", \"\\\\bigtriangledown\");\ndefineSymbol(math, main, bin, \"\\u2020\", \"\\\\dagger\");\ndefineSymbol(math, main, bin, \"\\u22c4\", \"\\\\diamond\");\ndefineSymbol(math, main, bin, \"\\u22c6\", \"\\\\star\");\ndefineSymbol(math, main, bin, \"\\u25c3\", \"\\\\triangleleft\");\ndefineSymbol(math, main, bin, \"\\u25b9\", \"\\\\triangleright\");\ndefineSymbol(math, main, symbols_open, \"{\", \"\\\\{\");\ndefineSymbol(symbols_text, main, textord, \"{\", \"\\\\{\");\ndefineSymbol(symbols_text, main, textord, \"{\", \"\\\\textbraceleft\");\ndefineSymbol(math, main, symbols_close, \"}\", \"\\\\}\");\ndefineSymbol(symbols_text, main, textord, \"}\", \"\\\\}\");\ndefineSymbol(symbols_text, main, textord, \"}\", \"\\\\textbraceright\");\ndefineSymbol(math, main, symbols_open, \"{\", \"\\\\lbrace\");\ndefineSymbol(math, main, symbols_close, \"}\", \"\\\\rbrace\");\ndefineSymbol(math, main, symbols_open, \"[\", \"\\\\lbrack\", true);\ndefineSymbol(symbols_text, main, textord, \"[\", \"\\\\lbrack\", true);\ndefineSymbol(math, main, symbols_close, \"]\", \"\\\\rbrack\", true);\ndefineSymbol(symbols_text, main, textord, \"]\", \"\\\\rbrack\", true);\ndefineSymbol(math, main, symbols_open, \"(\", \"\\\\lparen\", true);\ndefineSymbol(math, main, symbols_close, \")\", \"\\\\rparen\", true);\ndefineSymbol(symbols_text, main, textord, \"<\", \"\\\\textless\", true); // in T1 fontenc\n\ndefineSymbol(symbols_text, main, textord, \">\", \"\\\\textgreater\", true); // in T1 fontenc\n\ndefineSymbol(math, main, symbols_open, \"\\u230a\", \"\\\\lfloor\", true);\ndefineSymbol(math, main, symbols_close, \"\\u230b\", \"\\\\rfloor\", true);\ndefineSymbol(math, main, symbols_open, \"\\u2308\", \"\\\\lceil\", true);\ndefineSymbol(math, main, symbols_close, \"\\u2309\", \"\\\\rceil\", true);\ndefineSymbol(math, main, textord, \"\\\\\", \"\\\\backslash\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"|\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"\\\\vert\");\ndefineSymbol(symbols_text, main, textord, \"|\", \"\\\\textbar\", true); // in T1 fontenc\n\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\|\");\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\Vert\");\ndefineSymbol(symbols_text, main, textord, \"\\u2225\", \"\\\\textbardbl\");\ndefineSymbol(symbols_text, main, textord, \"~\", \"\\\\textasciitilde\");\ndefineSymbol(symbols_text, main, textord, \"\\\\\", \"\\\\textbackslash\");\ndefineSymbol(symbols_text, main, textord, \"^\", \"\\\\textasciicircum\");\ndefineSymbol(math, main, rel, \"\\u2191\", \"\\\\uparrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d1\", \"\\\\Uparrow\", true);\ndefineSymbol(math, main, rel, \"\\u2193\", \"\\\\downarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d3\", \"\\\\Downarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2195\", \"\\\\updownarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d5\", \"\\\\Updownarrow\", true);\ndefineSymbol(math, main, op, \"\\u2210\", \"\\\\coprod\");\ndefineSymbol(math, main, op, \"\\u22c1\", \"\\\\bigvee\");\ndefineSymbol(math, main, op, \"\\u22c0\", \"\\\\bigwedge\");\ndefineSymbol(math, main, op, \"\\u2a04\", \"\\\\biguplus\");\ndefineSymbol(math, main, op, \"\\u22c2\", \"\\\\bigcap\");\ndefineSymbol(math, main, op, \"\\u22c3\", \"\\\\bigcup\");\ndefineSymbol(math, main, op, \"\\u222b\", \"\\\\int\");\ndefineSymbol(math, main, op, \"\\u222b\", \"\\\\intop\");\ndefineSymbol(math, main, op, \"\\u222c\", \"\\\\iint\");\ndefineSymbol(math, main, op, \"\\u222d\", \"\\\\iiint\");\ndefineSymbol(math, main, op, \"\\u220f\", \"\\\\prod\");\ndefineSymbol(math, main, op, \"\\u2211\", \"\\\\sum\");\ndefineSymbol(math, main, op, \"\\u2a02\", \"\\\\bigotimes\");\ndefineSymbol(math, main, op, \"\\u2a01\", \"\\\\bigoplus\");\ndefineSymbol(math, main, op, \"\\u2a00\", \"\\\\bigodot\");\ndefineSymbol(math, main, op, \"\\u222e\", \"\\\\oint\");\ndefineSymbol(math, main, op, \"\\u222f\", \"\\\\oiint\");\ndefineSymbol(math, main, op, \"\\u2230\", \"\\\\oiiint\");\ndefineSymbol(math, main, op, \"\\u2a06\", \"\\\\bigsqcup\");\ndefineSymbol(math, main, op, \"\\u222b\", \"\\\\smallint\");\ndefineSymbol(symbols_text, main, inner, \"\\u2026\", \"\\\\textellipsis\");\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\mathellipsis\");\ndefineSymbol(symbols_text, main, inner, \"\\u2026\", \"\\\\ldots\", true);\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\ldots\", true);\ndefineSymbol(math, main, inner, \"\\u22ef\", \"\\\\@cdots\", true);\ndefineSymbol(math, main, inner, \"\\u22f1\", \"\\\\ddots\", true);\ndefineSymbol(math, main, textord, \"\\u22ee\", \"\\\\varvdots\"); // \\vdots is a macro\n\ndefineSymbol(math, main, accent, \"\\u02ca\", \"\\\\acute\");\ndefineSymbol(math, main, accent, \"\\u02cb\", \"\\\\grave\");\ndefineSymbol(math, main, accent, \"\\u00a8\", \"\\\\ddot\");\ndefineSymbol(math, main, accent, \"\\u007e\", \"\\\\tilde\");\ndefineSymbol(math, main, accent, \"\\u02c9\", \"\\\\bar\");\ndefineSymbol(math, main, accent, \"\\u02d8\", \"\\\\breve\");\ndefineSymbol(math, main, accent, \"\\u02c7\", \"\\\\check\");\ndefineSymbol(math, main, accent, \"\\u005e\", \"\\\\hat\");\ndefineSymbol(math, main, accent, \"\\u20d7\", \"\\\\vec\");\ndefineSymbol(math, main, accent, \"\\u02d9\", \"\\\\dot\");\ndefineSymbol(math, main, accent, \"\\u02da\", \"\\\\mathring\"); // \\imath and \\jmath should be invariant to \\mathrm, \\mathbf, etc., so use PUA\n\ndefineSymbol(math, main, mathord, \"\\ue131\", \"\\\\@imath\");\ndefineSymbol(math, main, mathord, \"\\ue237\", \"\\\\@jmath\");\ndefineSymbol(math, main, textord, \"\\u0131\", \"\\u0131\");\ndefineSymbol(math, main, textord, \"\\u0237\", \"\\u0237\");\ndefineSymbol(symbols_text, main, textord, \"\\u0131\", \"\\\\i\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u0237\", \"\\\\j\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u00df\", \"\\\\ss\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u00e6\", \"\\\\ae\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u0153\", \"\\\\oe\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u00f8\", \"\\\\o\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u00c6\", \"\\\\AE\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u0152\", \"\\\\OE\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u00d8\", \"\\\\O\", true);\ndefineSymbol(symbols_text, main, accent, \"\\u02ca\", \"\\\\'\"); // acute\n\ndefineSymbol(symbols_text, main, accent, \"\\u02cb\", \"\\\\`\"); // grave\n\ndefineSymbol(symbols_text, main, accent, \"\\u02c6\", \"\\\\^\"); // circumflex\n\ndefineSymbol(symbols_text, main, accent, \"\\u02dc\", \"\\\\~\"); // tilde\n\ndefineSymbol(symbols_text, main, accent, \"\\u02c9\", \"\\\\=\"); // macron\n\ndefineSymbol(symbols_text, main, accent, \"\\u02d8\", \"\\\\u\"); // breve\n\ndefineSymbol(symbols_text, main, accent, \"\\u02d9\", \"\\\\.\"); // dot above\n\ndefineSymbol(symbols_text, main, accent, \"\\u00b8\", \"\\\\c\"); // cedilla\n\ndefineSymbol(symbols_text, main, accent, \"\\u02da\", \"\\\\r\"); // ring above\n\ndefineSymbol(symbols_text, main, accent, \"\\u02c7\", \"\\\\v\"); // caron\n\ndefineSymbol(symbols_text, main, accent, \"\\u00a8\", '\\\\\"'); // diaresis\n\ndefineSymbol(symbols_text, main, accent, \"\\u02dd\", \"\\\\H\"); // double acute\n\ndefineSymbol(symbols_text, main, accent, \"\\u25ef\", \"\\\\textcircled\"); // \\bigcirc glyph\n// These ligatures are detected and created in Parser.js's `formLigatures`.\n\nconst ligatures = {\n \"--\": true,\n \"---\": true,\n \"``\": true,\n \"''\": true\n};\ndefineSymbol(symbols_text, main, textord, \"\\u2013\", \"--\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u2013\", \"\\\\textendash\");\ndefineSymbol(symbols_text, main, textord, \"\\u2014\", \"---\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u2014\", \"\\\\textemdash\");\ndefineSymbol(symbols_text, main, textord, \"\\u2018\", \"`\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u2018\", \"\\\\textquoteleft\");\ndefineSymbol(symbols_text, main, textord, \"\\u2019\", \"'\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u2019\", \"\\\\textquoteright\");\ndefineSymbol(symbols_text, main, textord, \"\\u201c\", \"``\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u201c\", \"\\\\textquotedblleft\");\ndefineSymbol(symbols_text, main, textord, \"\\u201d\", \"''\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u201d\", \"\\\\textquotedblright\"); // \\degree from gensymb package\n\ndefineSymbol(math, main, textord, \"\\u00b0\", \"\\\\degree\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u00b0\", \"\\\\degree\"); // \\textdegree from inputenc package\n\ndefineSymbol(symbols_text, main, textord, \"\\u00b0\", \"\\\\textdegree\", true); // TODO: In LaTeX, \\pounds can generate a different character in text and math\n// mode, but among our fonts, only Main-Regular defines this character \"163\".\n\ndefineSymbol(math, main, textord, \"\\u00a3\", \"\\\\pounds\");\ndefineSymbol(math, main, textord, \"\\u00a3\", \"\\\\mathsterling\", true);\ndefineSymbol(symbols_text, main, textord, \"\\u00a3\", \"\\\\pounds\");\ndefineSymbol(symbols_text, main, textord, \"\\u00a3\", \"\\\\textsterling\", true);\ndefineSymbol(math, ams, textord, \"\\u2720\", \"\\\\maltese\");\ndefineSymbol(symbols_text, ams, textord, \"\\u2720\", \"\\\\maltese\"); // There are lots of symbols which are the same, so we add them in afterwards.\n// All of these are textords in math mode\n\nconst mathTextSymbols = \"0123456789/@.\\\"\";\n\nfor (let i = 0; i < mathTextSymbols.length; i++) {\n const ch = mathTextSymbols.charAt(i);\n defineSymbol(math, main, textord, ch, ch);\n} // All of these are textords in text mode\n\n\nconst textSymbols = \"0123456789!@*()-=+\\\";:?/.,\";\n\nfor (let i = 0; i < textSymbols.length; i++) {\n const ch = textSymbols.charAt(i);\n defineSymbol(symbols_text, main, textord, ch, ch);\n} // All of these are textords in text mode, and mathords in math mode\n\n\nconst letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\nfor (let i = 0; i < letters.length; i++) {\n const ch = letters.charAt(i);\n defineSymbol(math, main, mathord, ch, ch);\n defineSymbol(symbols_text, main, textord, ch, ch);\n} // Blackboard bold and script letters in Unicode range\n\n\ndefineSymbol(math, ams, textord, \"C\", \"\\u2102\"); // blackboard bold\n\ndefineSymbol(symbols_text, ams, textord, \"C\", \"\\u2102\");\ndefineSymbol(math, ams, textord, \"H\", \"\\u210D\");\ndefineSymbol(symbols_text, ams, textord, \"H\", \"\\u210D\");\ndefineSymbol(math, ams, textord, \"N\", \"\\u2115\");\ndefineSymbol(symbols_text, ams, textord, \"N\", \"\\u2115\");\ndefineSymbol(math, ams, textord, \"P\", \"\\u2119\");\ndefineSymbol(symbols_text, ams, textord, \"P\", \"\\u2119\");\ndefineSymbol(math, ams, textord, \"Q\", \"\\u211A\");\ndefineSymbol(symbols_text, ams, textord, \"Q\", \"\\u211A\");\ndefineSymbol(math, ams, textord, \"R\", \"\\u211D\");\ndefineSymbol(symbols_text, ams, textord, \"R\", \"\\u211D\");\ndefineSymbol(math, ams, textord, \"Z\", \"\\u2124\");\ndefineSymbol(symbols_text, ams, textord, \"Z\", \"\\u2124\");\ndefineSymbol(math, main, mathord, \"h\", \"\\u210E\"); // italic h, Planck constant\n\ndefineSymbol(symbols_text, main, mathord, \"h\", \"\\u210E\"); // The next loop loads wide (surrogate pair) characters.\n// We support some letters in the Unicode range U+1D400 to U+1D7FF,\n// Mathematical Alphanumeric Symbols.\n// Some editors do not deal well with wide characters. So don't write the\n// string into this file. Instead, create the string from the surrogate pair.\n\nlet wideChar = \"\";\n\nfor (let i = 0; i < letters.length; i++) {\n const ch = letters.charAt(i); // The hex numbers in the next line are a surrogate pair.\n // 0xD835 is the high surrogate for all letters in the range we support.\n // 0xDC00 is the low surrogate for bold A.\n\n wideChar = String.fromCharCode(0xD835, 0xDC00 + i); // A-Z a-z bold\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDC34 + i); // A-Z a-z italic\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDC68 + i); // A-Z a-z bold italic\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDD04 + i); // A-Z a-z Fraktur\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDD6C + i); // A-Z a-z bold Fraktur\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDDA0 + i); // A-Z a-z sans-serif\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDDD4 + i); // A-Z a-z sans bold\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDE08 + i); // A-Z a-z sans italic\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDE70 + i); // A-Z a-z monospace\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n\n if (i < 26) {\n // KaTeX fonts have only capital letters for blackboard bold and script.\n // See exception for k below.\n wideChar = String.fromCharCode(0xD835, 0xDD38 + i); // A-Z double struck\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDC9C + i); // A-Z script\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n } // TODO: Add bold script when it is supported by a KaTeX font.\n\n} // \"k\" is the only double struck lower case letter in the KaTeX fonts.\n\n\nwideChar = String.fromCharCode(0xD835, 0xDD5C); // k double struck\n\ndefineSymbol(math, main, mathord, \"k\", wideChar);\ndefineSymbol(symbols_text, main, textord, \"k\", wideChar); // Next, some wide character numerals\n\nfor (let i = 0; i < 10; i++) {\n const ch = i.toString();\n wideChar = String.fromCharCode(0xD835, 0xDFCE + i); // 0-9 bold\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDFE2 + i); // 0-9 sans serif\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDFEC + i); // 0-9 bold sans\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDFF6 + i); // 0-9 monospace\n\n defineSymbol(math, main, mathord, ch, wideChar);\n defineSymbol(symbols_text, main, textord, ch, wideChar);\n} // We add these Latin-1 letters as symbols for backwards-compatibility,\n// but they are not actually in the font, nor are they supported by the\n// Unicode accent mechanism, so they fall back to Times font and look ugly.\n// TODO(edemaine): Fix this.\n\n\nconst extraLatin = \"\\u00d0\\u00de\\u00fe\";\n\nfor (let i = 0; i < extraLatin.length; i++) {\n const ch = extraLatin.charAt(i);\n defineSymbol(math, main, mathord, ch, ch);\n defineSymbol(symbols_text, main, textord, ch, ch);\n}\n;// CONCATENATED MODULE: ./src/wide-character.js\n/**\n * This file provides support for Unicode range U+1D400 to U+1D7FF,\n * Mathematical Alphanumeric Symbols.\n *\n * Function wideCharacterFont takes a wide character as input and returns\n * the font information necessary to render it properly.\n */\n\n/**\n * Data below is from https://www.unicode.org/charts/PDF/U1D400.pdf\n * That document sorts characters into groups by font type, say bold or italic.\n *\n * In the arrays below, each subarray consists three elements:\n * * The CSS class of that group when in math mode.\n * * The CSS class of that group when in text mode.\n * * The font name, so that KaTeX can get font metrics.\n */\n\nconst wideLatinLetterData = [[\"mathbf\", \"textbf\", \"Main-Bold\"], // A-Z bold upright\n[\"mathbf\", \"textbf\", \"Main-Bold\"], // a-z bold upright\n[\"mathnormal\", \"textit\", \"Math-Italic\"], // A-Z italic\n[\"mathnormal\", \"textit\", \"Math-Italic\"], // a-z italic\n[\"boldsymbol\", \"boldsymbol\", \"Main-BoldItalic\"], // A-Z bold italic\n[\"boldsymbol\", \"boldsymbol\", \"Main-BoldItalic\"], // a-z bold italic\n// Map fancy A-Z letters to script, not calligraphic.\n// This aligns with unicode-math and math fonts (except Cambria Math).\n[\"mathscr\", \"textscr\", \"Script-Regular\"], // A-Z script\n[\"\", \"\", \"\"], // a-z script. No font\n[\"\", \"\", \"\"], // A-Z bold script. No font\n[\"\", \"\", \"\"], // a-z bold script. No font\n[\"mathfrak\", \"textfrak\", \"Fraktur-Regular\"], // A-Z Fraktur\n[\"mathfrak\", \"textfrak\", \"Fraktur-Regular\"], // a-z Fraktur\n[\"mathbb\", \"textbb\", \"AMS-Regular\"], // A-Z double-struck\n[\"mathbb\", \"textbb\", \"AMS-Regular\"], // k double-struck\n// Note that we are using a bold font, but font metrics for regular Fraktur.\n[\"mathboldfrak\", \"textboldfrak\", \"Fraktur-Regular\"], // A-Z bold Fraktur\n[\"mathboldfrak\", \"textboldfrak\", \"Fraktur-Regular\"], // a-z bold Fraktur\n[\"mathsf\", \"textsf\", \"SansSerif-Regular\"], // A-Z sans-serif\n[\"mathsf\", \"textsf\", \"SansSerif-Regular\"], // a-z sans-serif\n[\"mathboldsf\", \"textboldsf\", \"SansSerif-Bold\"], // A-Z bold sans-serif\n[\"mathboldsf\", \"textboldsf\", \"SansSerif-Bold\"], // a-z bold sans-serif\n[\"mathitsf\", \"textitsf\", \"SansSerif-Italic\"], // A-Z italic sans-serif\n[\"mathitsf\", \"textitsf\", \"SansSerif-Italic\"], // a-z italic sans-serif\n[\"\", \"\", \"\"], // A-Z bold italic sans. No font\n[\"\", \"\", \"\"], // a-z bold italic sans. No font\n[\"mathtt\", \"texttt\", \"Typewriter-Regular\"], // A-Z monospace\n[\"mathtt\", \"texttt\", \"Typewriter-Regular\"] // a-z monospace\n];\nconst wideNumeralData = [[\"mathbf\", \"textbf\", \"Main-Bold\"], // 0-9 bold\n[\"\", \"\", \"\"], // 0-9 double-struck. No KaTeX font.\n[\"mathsf\", \"textsf\", \"SansSerif-Regular\"], // 0-9 sans-serif\n[\"mathboldsf\", \"textboldsf\", \"SansSerif-Bold\"], // 0-9 bold sans-serif\n[\"mathtt\", \"texttt\", \"Typewriter-Regular\"] // 0-9 monospace\n];\nconst wideCharacterFont = function (wideChar, mode) {\n // IE doesn't support codePointAt(). So work with the surrogate pair.\n const H = wideChar.charCodeAt(0); // high surrogate\n\n const L = wideChar.charCodeAt(1); // low surrogate\n\n const codePoint = (H - 0xD800) * 0x400 + (L - 0xDC00) + 0x10000;\n const j = mode === \"math\" ? 0 : 1; // column index for CSS class.\n\n if (0x1D400 <= codePoint && codePoint < 0x1D6A4) {\n // wideLatinLetterData contains exactly 26 chars on each row.\n // So we can calculate the relevant row. No traverse necessary.\n const i = Math.floor((codePoint - 0x1D400) / 26);\n return [wideLatinLetterData[i][2], wideLatinLetterData[i][j]];\n } else if (0x1D7CE <= codePoint && codePoint <= 0x1D7FF) {\n // Numerals, ten per row.\n const i = Math.floor((codePoint - 0x1D7CE) / 10);\n return [wideNumeralData[i][2], wideNumeralData[i][j]];\n } else if (codePoint === 0x1D6A5 || codePoint === 0x1D6A6) {\n // dotless i or j\n return [wideLatinLetterData[0][2], wideLatinLetterData[0][j]];\n } else if (0x1D6A6 < codePoint && codePoint < 0x1D7CE) {\n // Greek letters. Not supported, yet.\n return [\"\", \"\"];\n } else {\n // We don't support any wide characters outside 1D400–1D7FF.\n throw new src_ParseError(\"Unsupported character: \" + wideChar);\n }\n};\n;// CONCATENATED MODULE: ./src/buildCommon.js\n/* eslint no-console:0 */\n\n/**\n * This module contains general functions that can be used for building\n * different kinds of domTree nodes in a consistent manner.\n */\n\n\n\n\n\n\n\n/**\n * Looks up the given symbol in fontMetrics, after applying any symbol\n * replacements defined in symbol.js\n */\nconst lookupSymbol = function (value, // TODO(#963): Use a union type for this.\nfontName, mode) {\n // Replace the value with its replaced value from symbol.js\n if (src_symbols[mode][value] && src_symbols[mode][value].replace) {\n value = src_symbols[mode][value].replace;\n }\n\n return {\n value: value,\n metrics: getCharacterMetrics(value, fontName, mode)\n };\n};\n/**\n * Makes a symbolNode after translation via the list of symbols in symbols.js.\n * Correctly pulls out metrics for the character, and optionally takes a list of\n * classes to be attached to the node.\n *\n * TODO: make argument order closer to makeSpan\n * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which\n * should if present come first in `classes`.\n * TODO(#953): Make `options` mandatory and always pass it in.\n */\n\n\nconst makeSymbol = function (value, fontName, mode, options, classes) {\n const lookup = lookupSymbol(value, fontName, mode);\n const metrics = lookup.metrics;\n value = lookup.value;\n let symbolNode;\n\n if (metrics) {\n let italic = metrics.italic;\n\n if (mode === \"text\" || options && options.font === \"mathit\") {\n italic = 0;\n }\n\n symbolNode = new SymbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, metrics.width, classes);\n } else {\n // TODO(emily): Figure out a good way to only print this in development\n typeof console !== \"undefined\" && console.warn(\"No character metrics \" + (\"for '\" + value + \"' in style '\" + fontName + \"' and mode '\" + mode + \"'\"));\n symbolNode = new SymbolNode(value, 0, 0, 0, 0, 0, classes);\n }\n\n if (options) {\n symbolNode.maxFontSize = options.sizeMultiplier;\n\n if (options.style.isTight()) {\n symbolNode.classes.push(\"mtight\");\n }\n\n const color = options.getColor();\n\n if (color) {\n symbolNode.style.color = color;\n }\n }\n\n return symbolNode;\n};\n/**\n * Makes a symbol in Main-Regular or AMS-Regular.\n * Used for rel, bin, open, close, inner, and punct.\n */\n\n\nconst mathsym = function (value, mode, options, classes) {\n if (classes === void 0) {\n classes = [];\n }\n\n // Decide what font to render the symbol in by its entry in the symbols\n // table.\n // Have a special case for when the value = \\ because the \\ is used as a\n // textord in unsupported command errors but cannot be parsed as a regular\n // text ordinal and is therefore not present as a symbol in the symbols\n // table for text, as well as a special case for boldsymbol because it\n // can be used for bold + and -\n if (options.font === \"boldsymbol\" && lookupSymbol(value, \"Main-Bold\", mode).metrics) {\n return makeSymbol(value, \"Main-Bold\", mode, options, classes.concat([\"mathbf\"]));\n } else if (value === \"\\\\\" || src_symbols[mode][value].font === \"main\") {\n return makeSymbol(value, \"Main-Regular\", mode, options, classes);\n } else {\n return makeSymbol(value, \"AMS-Regular\", mode, options, classes.concat([\"amsrm\"]));\n }\n};\n/**\n * Determines which of the two font names (Main-Bold and Math-BoldItalic) and\n * corresponding style tags (mathbf or boldsymbol) to use for font \"boldsymbol\",\n * depending on the symbol. Use this function instead of fontMap for font\n * \"boldsymbol\".\n */\n\n\nconst boldsymbol = function (value, mode, options, classes, type) {\n if (type !== \"textord\" && lookupSymbol(value, \"Math-BoldItalic\", mode).metrics) {\n return {\n fontName: \"Math-BoldItalic\",\n fontClass: \"boldsymbol\"\n };\n } else {\n // Some glyphs do not exist in Math-BoldItalic so we need to use\n // Main-Bold instead.\n return {\n fontName: \"Main-Bold\",\n fontClass: \"mathbf\"\n };\n }\n};\n/**\n * Makes either a mathord or textord in the correct font and color.\n */\n\n\nconst makeOrd = function (group, options, type) {\n const mode = group.mode;\n const text = group.text;\n const classes = [\"mord\"]; // Math mode or Old font (i.e. \\rm)\n\n const isFont = mode === \"math\" || mode === \"text\" && options.font;\n const fontOrFamily = isFont ? options.font : options.fontFamily;\n let wideFontName = \"\";\n let wideFontClass = \"\";\n\n if (text.charCodeAt(0) === 0xD835) {\n [wideFontName, wideFontClass] = wideCharacterFont(text, mode);\n }\n\n if (wideFontName.length > 0) {\n // surrogate pairs get special treatment\n return makeSymbol(text, wideFontName, mode, options, classes.concat(wideFontClass));\n } else if (fontOrFamily) {\n let fontName;\n let fontClasses;\n\n if (fontOrFamily === \"boldsymbol\") {\n const fontData = boldsymbol(text, mode, options, classes, type);\n fontName = fontData.fontName;\n fontClasses = [fontData.fontClass];\n } else if (isFont) {\n fontName = fontMap[fontOrFamily].fontName;\n fontClasses = [fontOrFamily];\n } else {\n fontName = retrieveTextFontName(fontOrFamily, options.fontWeight, options.fontShape);\n fontClasses = [fontOrFamily, options.fontWeight, options.fontShape];\n }\n\n if (lookupSymbol(text, fontName, mode).metrics) {\n return makeSymbol(text, fontName, mode, options, classes.concat(fontClasses));\n } else if (ligatures.hasOwnProperty(text) && fontName.slice(0, 10) === \"Typewriter\") {\n // Deconstruct ligatures in monospace fonts (\\texttt, \\tt).\n const parts = [];\n\n for (let i = 0; i < text.length; i++) {\n parts.push(makeSymbol(text[i], fontName, mode, options, classes.concat(fontClasses)));\n }\n\n return makeFragment(parts);\n }\n } // Makes a symbol in the default font for mathords and textords.\n\n\n if (type === \"mathord\") {\n return makeSymbol(text, \"Math-Italic\", mode, options, classes.concat([\"mathnormal\"]));\n } else if (type === \"textord\") {\n const font = src_symbols[mode][text] && src_symbols[mode][text].font;\n\n if (font === \"ams\") {\n const fontName = retrieveTextFontName(\"amsrm\", options.fontWeight, options.fontShape);\n return makeSymbol(text, fontName, mode, options, classes.concat(\"amsrm\", options.fontWeight, options.fontShape));\n } else if (font === \"main\" || !font) {\n const fontName = retrieveTextFontName(\"textrm\", options.fontWeight, options.fontShape);\n return makeSymbol(text, fontName, mode, options, classes.concat(options.fontWeight, options.fontShape));\n } else {\n // fonts added by plugins\n const fontName = retrieveTextFontName(font, options.fontWeight, options.fontShape); // We add font name as a css class\n\n return makeSymbol(text, fontName, mode, options, classes.concat(fontName, options.fontWeight, options.fontShape));\n }\n } else {\n throw new Error(\"unexpected type: \" + type + \" in makeOrd\");\n }\n};\n/**\n * Returns true if subsequent symbolNodes have the same classes, skew, maxFont,\n * and styles.\n */\n\n\nconst canCombine = (prev, next) => {\n if (createClass(prev.classes) !== createClass(next.classes) || prev.skew !== next.skew || prev.maxFontSize !== next.maxFontSize) {\n return false;\n } // If prev and next both are just \"mbin\"s or \"mord\"s we don't combine them\n // so that the proper spacing can be preserved.\n\n\n if (prev.classes.length === 1) {\n const cls = prev.classes[0];\n\n if (cls === \"mbin\" || cls === \"mord\") {\n return false;\n }\n }\n\n for (const style in prev.style) {\n if (prev.style.hasOwnProperty(style) && prev.style[style] !== next.style[style]) {\n return false;\n }\n }\n\n for (const style in next.style) {\n if (next.style.hasOwnProperty(style) && prev.style[style] !== next.style[style]) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Combine consecutive domTree.symbolNodes into a single symbolNode.\n * Note: this function mutates the argument.\n */\n\n\nconst tryCombineChars = chars => {\n for (let i = 0; i < chars.length - 1; i++) {\n const prev = chars[i];\n const next = chars[i + 1];\n\n if (prev instanceof SymbolNode && next instanceof SymbolNode && canCombine(prev, next)) {\n prev.text += next.text;\n prev.height = Math.max(prev.height, next.height);\n prev.depth = Math.max(prev.depth, next.depth); // Use the last character's italic correction since we use\n // it to add padding to the right of the span created from\n // the combined characters.\n\n prev.italic = next.italic;\n chars.splice(i + 1, 1);\n i--;\n }\n }\n\n return chars;\n};\n/**\n * Calculate the height, depth, and maxFontSize of an element based on its\n * children.\n */\n\n\nconst sizeElementFromChildren = function (elem) {\n let height = 0;\n let depth = 0;\n let maxFontSize = 0;\n\n for (let i = 0; i < elem.children.length; i++) {\n const child = elem.children[i];\n\n if (child.height > height) {\n height = child.height;\n }\n\n if (child.depth > depth) {\n depth = child.depth;\n }\n\n if (child.maxFontSize > maxFontSize) {\n maxFontSize = child.maxFontSize;\n }\n }\n\n elem.height = height;\n elem.depth = depth;\n elem.maxFontSize = maxFontSize;\n};\n/**\n * Makes a span with the given list of classes, list of children, and options.\n *\n * TODO(#953): Ensure that `options` is always provided (currently some call\n * sites don't pass it) and make the type below mandatory.\n * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which\n * should if present come first in `classes`.\n */\n\n\nconst makeSpan = function (classes, children, options, style) {\n const span = new Span(classes, children, options, style);\n sizeElementFromChildren(span);\n return span;\n}; // SVG one is simpler -- doesn't require height, depth, max-font setting.\n// This is also a separate method for typesafety.\n\n\nconst makeSvgSpan = (classes, children, options, style) => new Span(classes, children, options, style);\n\nconst makeLineSpan = function (className, options, thickness) {\n const line = makeSpan([className], [], options);\n line.height = Math.max(thickness || options.fontMetrics().defaultRuleThickness, options.minRuleThickness);\n line.style.borderBottomWidth = makeEm(line.height);\n line.maxFontSize = 1.0;\n return line;\n};\n/**\n * Makes an anchor with the given href, list of classes, list of children,\n * and options.\n */\n\n\nconst makeAnchor = function (href, classes, children, options) {\n const anchor = new Anchor(href, classes, children, options);\n sizeElementFromChildren(anchor);\n return anchor;\n};\n/**\n * Makes a document fragment with the given list of children.\n */\n\n\nconst makeFragment = function (children) {\n const fragment = new DocumentFragment(children);\n sizeElementFromChildren(fragment);\n return fragment;\n};\n/**\n * Wraps group in a span if it's a document fragment, allowing to apply classes\n * and styles\n */\n\n\nconst wrapFragment = function (group, options) {\n if (group instanceof DocumentFragment) {\n return makeSpan([], [group], options);\n }\n\n return group;\n}; // These are exact object types to catch typos in the names of the optional fields.\n\n\n// Computes the updated `children` list and the overall depth.\n//\n// This helper function for makeVList makes it easier to enforce type safety by\n// allowing early exits (returns) in the logic.\nconst getVListChildrenAndDepth = function (params) {\n if (params.positionType === \"individualShift\") {\n const oldChildren = params.children;\n const children = [oldChildren[0]]; // Add in kerns to the list of params.children to get each element to be\n // shifted to the correct specified shift\n\n const depth = -oldChildren[0].shift - oldChildren[0].elem.depth;\n let currPos = depth;\n\n for (let i = 1; i < oldChildren.length; i++) {\n const diff = -oldChildren[i].shift - currPos - oldChildren[i].elem.depth;\n const size = diff - (oldChildren[i - 1].elem.height + oldChildren[i - 1].elem.depth);\n currPos = currPos + diff;\n children.push({\n type: \"kern\",\n size\n });\n children.push(oldChildren[i]);\n }\n\n return {\n children,\n depth\n };\n }\n\n let depth;\n\n if (params.positionType === \"top\") {\n // We always start at the bottom, so calculate the bottom by adding up\n // all the sizes\n let bottom = params.positionData;\n\n for (let i = 0; i < params.children.length; i++) {\n const child = params.children[i];\n bottom -= child.type === \"kern\" ? child.size : child.elem.height + child.elem.depth;\n }\n\n depth = bottom;\n } else if (params.positionType === \"bottom\") {\n depth = -params.positionData;\n } else {\n const firstChild = params.children[0];\n\n if (firstChild.type !== \"elem\") {\n throw new Error('First child must have type \"elem\".');\n }\n\n if (params.positionType === \"shift\") {\n depth = -firstChild.elem.depth - params.positionData;\n } else if (params.positionType === \"firstBaseline\") {\n depth = -firstChild.elem.depth;\n } else {\n throw new Error(\"Invalid positionType \" + params.positionType + \".\");\n }\n }\n\n return {\n children: params.children,\n depth\n };\n};\n/**\n * Makes a vertical list by stacking elements and kerns on top of each other.\n * Allows for many different ways of specifying the positioning method.\n *\n * See VListParam documentation above.\n */\n\n\nconst makeVList = function (params, options) {\n const {\n children,\n depth\n } = getVListChildrenAndDepth(params); // Create a strut that is taller than any list item. The strut is added to\n // each item, where it will determine the item's baseline. Since it has\n // `overflow:hidden`, the strut's top edge will sit on the item's line box's\n // top edge and the strut's bottom edge will sit on the item's baseline,\n // with no additional line-height spacing. This allows the item baseline to\n // be positioned precisely without worrying about font ascent and\n // line-height.\n\n let pstrutSize = 0;\n\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n\n if (child.type === \"elem\") {\n const elem = child.elem;\n pstrutSize = Math.max(pstrutSize, elem.maxFontSize, elem.height);\n }\n }\n\n pstrutSize += 2;\n const pstrut = makeSpan([\"pstrut\"], []);\n pstrut.style.height = makeEm(pstrutSize); // Create a new list of actual children at the correct offsets\n\n const realChildren = [];\n let minPos = depth;\n let maxPos = depth;\n let currPos = depth;\n\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n\n if (child.type === \"kern\") {\n currPos += child.size;\n } else {\n const elem = child.elem;\n const classes = child.wrapperClasses || [];\n const style = child.wrapperStyle || {};\n const childWrap = makeSpan(classes, [pstrut, elem], undefined, style);\n childWrap.style.top = makeEm(-pstrutSize - currPos - elem.depth);\n\n if (child.marginLeft) {\n childWrap.style.marginLeft = child.marginLeft;\n }\n\n if (child.marginRight) {\n childWrap.style.marginRight = child.marginRight;\n }\n\n realChildren.push(childWrap);\n currPos += elem.height + elem.depth;\n }\n\n minPos = Math.min(minPos, currPos);\n maxPos = Math.max(maxPos, currPos);\n } // The vlist contents go in a table-cell with `vertical-align:bottom`.\n // This cell's bottom edge will determine the containing table's baseline\n // without overly expanding the containing line-box.\n\n\n const vlist = makeSpan([\"vlist\"], realChildren);\n vlist.style.height = makeEm(maxPos); // A second row is used if necessary to represent the vlist's depth.\n\n let rows;\n\n if (minPos < 0) {\n // We will define depth in an empty span with display: table-cell.\n // It should render with the height that we define. But Chrome, in\n // contenteditable mode only, treats that span as if it contains some\n // text content. And that min-height over-rides our desired height.\n // So we put another empty span inside the depth strut span.\n const emptySpan = makeSpan([], []);\n const depthStrut = makeSpan([\"vlist\"], [emptySpan]);\n depthStrut.style.height = makeEm(-minPos); // Safari wants the first row to have inline content; otherwise it\n // puts the bottom of the *second* row on the baseline.\n\n const topStrut = makeSpan([\"vlist-s\"], [new SymbolNode(\"\\u200b\")]);\n rows = [makeSpan([\"vlist-r\"], [vlist, topStrut]), makeSpan([\"vlist-r\"], [depthStrut])];\n } else {\n rows = [makeSpan([\"vlist-r\"], [vlist])];\n }\n\n const vtable = makeSpan([\"vlist-t\"], rows);\n\n if (rows.length === 2) {\n vtable.classes.push(\"vlist-t2\");\n }\n\n vtable.height = maxPos;\n vtable.depth = -minPos;\n return vtable;\n}; // Glue is a concept from TeX which is a flexible space between elements in\n// either a vertical or horizontal list. In KaTeX, at least for now, it's\n// static space between elements in a horizontal layout.\n\n\nconst makeGlue = (measurement, options) => {\n // Make an empty span for the space\n const rule = makeSpan([\"mspace\"], [], options);\n const size = calculateSize(measurement, options);\n rule.style.marginRight = makeEm(size);\n return rule;\n}; // Takes font options, and returns the appropriate fontLookup name\n\n\nconst retrieveTextFontName = function (fontFamily, fontWeight, fontShape) {\n let baseFontName = \"\";\n\n switch (fontFamily) {\n case \"amsrm\":\n baseFontName = \"AMS\";\n break;\n\n case \"textrm\":\n baseFontName = \"Main\";\n break;\n\n case \"textsf\":\n baseFontName = \"SansSerif\";\n break;\n\n case \"texttt\":\n baseFontName = \"Typewriter\";\n break;\n\n default:\n baseFontName = fontFamily;\n // use fonts added by a plugin\n }\n\n let fontStylesName;\n\n if (fontWeight === \"textbf\" && fontShape === \"textit\") {\n fontStylesName = \"BoldItalic\";\n } else if (fontWeight === \"textbf\") {\n fontStylesName = \"Bold\";\n } else if (fontWeight === \"textit\") {\n fontStylesName = \"Italic\";\n } else {\n fontStylesName = \"Regular\";\n }\n\n return baseFontName + \"-\" + fontStylesName;\n};\n/**\n * Maps TeX font commands to objects containing:\n * - variant: string used for \"mathvariant\" attribute in buildMathML.js\n * - fontName: the \"style\" parameter to fontMetrics.getCharacterMetrics\n */\n// A map between tex font commands an MathML mathvariant attribute values\n\n\nconst fontMap = {\n // styles\n \"mathbf\": {\n variant: \"bold\",\n fontName: \"Main-Bold\"\n },\n \"mathrm\": {\n variant: \"normal\",\n fontName: \"Main-Regular\"\n },\n \"textit\": {\n variant: \"italic\",\n fontName: \"Main-Italic\"\n },\n \"mathit\": {\n variant: \"italic\",\n fontName: \"Main-Italic\"\n },\n \"mathnormal\": {\n variant: \"italic\",\n fontName: \"Math-Italic\"\n },\n // \"boldsymbol\" is missing because they require the use of multiple fonts:\n // Math-BoldItalic and Main-Bold. This is handled by a special case in\n // makeOrd which ends up calling boldsymbol.\n // families\n \"mathbb\": {\n variant: \"double-struck\",\n fontName: \"AMS-Regular\"\n },\n \"mathcal\": {\n variant: \"script\",\n fontName: \"Caligraphic-Regular\"\n },\n \"mathfrak\": {\n variant: \"fraktur\",\n fontName: \"Fraktur-Regular\"\n },\n \"mathscr\": {\n variant: \"script\",\n fontName: \"Script-Regular\"\n },\n \"mathsf\": {\n variant: \"sans-serif\",\n fontName: \"SansSerif-Regular\"\n },\n \"mathtt\": {\n variant: \"monospace\",\n fontName: \"Typewriter-Regular\"\n }\n};\nconst svgData = {\n // path, width, height\n vec: [\"vec\", 0.471, 0.714],\n // values from the font glyph\n oiintSize1: [\"oiintSize1\", 0.957, 0.499],\n // oval to overlay the integrand\n oiintSize2: [\"oiintSize2\", 1.472, 0.659],\n oiiintSize1: [\"oiiintSize1\", 1.304, 0.499],\n oiiintSize2: [\"oiiintSize2\", 1.98, 0.659]\n};\n\nconst staticSvg = function (value, options) {\n // Create a span with inline SVG for the element.\n const [pathName, width, height] = svgData[value];\n const path = new PathNode(pathName);\n const svgNode = new SvgNode([path], {\n \"width\": makeEm(width),\n \"height\": makeEm(height),\n // Override CSS rule `.katex svg { width: 100% }`\n \"style\": \"width:\" + makeEm(width),\n \"viewBox\": \"0 0 \" + 1000 * width + \" \" + 1000 * height,\n \"preserveAspectRatio\": \"xMinYMin\"\n });\n const span = makeSvgSpan([\"overlay\"], [svgNode], options);\n span.height = height;\n span.style.height = makeEm(height);\n span.style.width = makeEm(width);\n return span;\n};\n\n/* harmony default export */ var buildCommon = ({\n fontMap,\n makeSymbol,\n mathsym,\n makeSpan,\n makeSvgSpan,\n makeLineSpan,\n makeAnchor,\n makeFragment,\n wrapFragment,\n makeVList,\n makeOrd,\n makeGlue,\n staticSvg,\n svgData,\n tryCombineChars\n});\n;// CONCATENATED MODULE: ./src/spacingData.js\n/**\n * Describes spaces between different classes of atoms.\n */\nconst thinspace = {\n number: 3,\n unit: \"mu\"\n};\nconst mediumspace = {\n number: 4,\n unit: \"mu\"\n};\nconst thickspace = {\n number: 5,\n unit: \"mu\"\n}; // Making the type below exact with all optional fields doesn't work due to\n// - https://github.com/facebook/flow/issues/4582\n// - https://github.com/facebook/flow/issues/5688\n// However, since *all* fields are optional, $Shape<> works as suggested in 5688\n// above.\n\n// Spacing relationships for display and text styles\nconst spacings = {\n mord: {\n mop: thinspace,\n mbin: mediumspace,\n mrel: thickspace,\n minner: thinspace\n },\n mop: {\n mord: thinspace,\n mop: thinspace,\n mrel: thickspace,\n minner: thinspace\n },\n mbin: {\n mord: mediumspace,\n mop: mediumspace,\n mopen: mediumspace,\n minner: mediumspace\n },\n mrel: {\n mord: thickspace,\n mop: thickspace,\n mopen: thickspace,\n minner: thickspace\n },\n mopen: {},\n mclose: {\n mop: thinspace,\n mbin: mediumspace,\n mrel: thickspace,\n minner: thinspace\n },\n mpunct: {\n mord: thinspace,\n mop: thinspace,\n mrel: thickspace,\n mopen: thinspace,\n mclose: thinspace,\n mpunct: thinspace,\n minner: thinspace\n },\n minner: {\n mord: thinspace,\n mop: thinspace,\n mbin: mediumspace,\n mrel: thickspace,\n mopen: thinspace,\n mpunct: thinspace,\n minner: thinspace\n }\n}; // Spacing relationships for script and scriptscript styles\n\nconst tightSpacings = {\n mord: {\n mop: thinspace\n },\n mop: {\n mord: thinspace,\n mop: thinspace\n },\n mbin: {},\n mrel: {},\n mopen: {},\n mclose: {\n mop: thinspace\n },\n mpunct: {},\n minner: {\n mop: thinspace\n }\n};\n;// CONCATENATED MODULE: ./src/defineFunction.js\n/** Context provided to function handlers for error messages. */\n// Note: reverse the order of the return type union will cause a flow error.\n// See https://github.com/facebook/flow/issues/3663.\n// More general version of `HtmlBuilder` for nodes (e.g. \\sum, accent types)\n// whose presence impacts super/subscripting. In this case, ParseNode<\"supsub\">\n// delegates its HTML building to the HtmlBuilder corresponding to these nodes.\n\n/**\n * Final function spec for use at parse time.\n * This is almost identical to `FunctionPropSpec`, except it\n * 1. includes the function handler, and\n * 2. requires all arguments except argTypes.\n * It is generated by `defineFunction()` below.\n */\n\n/**\n * All registered functions.\n * `functions.js` just exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary.\n */\nconst _functions = {};\n/**\n * All HTML builders. Should be only used in the `define*` and the `build*ML`\n * functions.\n */\n\nconst _htmlGroupBuilders = {};\n/**\n * All MathML builders. Should be only used in the `define*` and the `build*ML`\n * functions.\n */\n\nconst _mathmlGroupBuilders = {};\nfunction defineFunction(_ref) {\n let {\n type,\n names,\n props,\n handler,\n htmlBuilder,\n mathmlBuilder\n } = _ref;\n // Set default values of functions\n const data = {\n type,\n numArgs: props.numArgs,\n argTypes: props.argTypes,\n allowedInArgument: !!props.allowedInArgument,\n allowedInText: !!props.allowedInText,\n allowedInMath: props.allowedInMath === undefined ? true : props.allowedInMath,\n numOptionalArgs: props.numOptionalArgs || 0,\n infix: !!props.infix,\n primitive: !!props.primitive,\n handler: handler\n };\n\n for (let i = 0; i < names.length; ++i) {\n _functions[names[i]] = data;\n }\n\n if (type) {\n if (htmlBuilder) {\n _htmlGroupBuilders[type] = htmlBuilder;\n }\n\n if (mathmlBuilder) {\n _mathmlGroupBuilders[type] = mathmlBuilder;\n }\n }\n}\n/**\n * Use this to register only the HTML and MathML builders for a function (e.g.\n * if the function's ParseNode is generated in Parser.js rather than via a\n * stand-alone handler provided to `defineFunction`).\n */\n\nfunction defineFunctionBuilders(_ref2) {\n let {\n type,\n htmlBuilder,\n mathmlBuilder\n } = _ref2;\n defineFunction({\n type,\n names: [],\n props: {\n numArgs: 0\n },\n\n handler() {\n throw new Error('Should never be called.');\n },\n\n htmlBuilder,\n mathmlBuilder\n });\n}\nconst normalizeArgument = function (arg) {\n return arg.type === \"ordgroup\" && arg.body.length === 1 ? arg.body[0] : arg;\n}; // Since the corresponding buildHTML/buildMathML function expects a\n// list of elements, we normalize for different kinds of arguments\n\nconst ordargument = function (arg) {\n return arg.type === \"ordgroup\" ? arg.body : [arg];\n};\n;// CONCATENATED MODULE: ./src/buildHTML.js\n/**\n * This file does the main work of building a domTree structure from a parse\n * tree. The entry point is the `buildHTML` function, which takes a parse tree.\n * Then, the buildExpression, buildGroup, and various groupBuilders functions\n * are called, to produce a final HTML tree.\n */\n\n\n\n\n\n\n\n\n\nconst buildHTML_makeSpan = buildCommon.makeSpan; // Binary atoms (first class `mbin`) change into ordinary atoms (`mord`)\n// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,\n// and the text before Rule 19.\n\nconst binLeftCanceller = [\"leftmost\", \"mbin\", \"mopen\", \"mrel\", \"mop\", \"mpunct\"];\nconst binRightCanceller = [\"rightmost\", \"mrel\", \"mclose\", \"mpunct\"];\nconst styleMap = {\n \"display\": src_Style.DISPLAY,\n \"text\": src_Style.TEXT,\n \"script\": src_Style.SCRIPT,\n \"scriptscript\": src_Style.SCRIPTSCRIPT\n};\nconst DomEnum = {\n mord: \"mord\",\n mop: \"mop\",\n mbin: \"mbin\",\n mrel: \"mrel\",\n mopen: \"mopen\",\n mclose: \"mclose\",\n mpunct: \"mpunct\",\n minner: \"minner\"\n};\n\n/**\n * Take a list of nodes, build them in order, and return a list of the built\n * nodes. documentFragments are flattened into their contents, so the\n * returned list contains no fragments. `isRealGroup` is true if `expression`\n * is a real group (no atoms will be added on either side), as opposed to\n * a partial group (e.g. one created by \\color). `surrounding` is an array\n * consisting type of nodes that will be added to the left and right.\n */\nconst buildExpression = function (expression, options, isRealGroup, surrounding) {\n if (surrounding === void 0) {\n surrounding = [null, null];\n }\n\n // Parse expressions into `groups`.\n const groups = [];\n\n for (let i = 0; i < expression.length; i++) {\n const output = buildGroup(expression[i], options);\n\n if (output instanceof DocumentFragment) {\n const children = output.children;\n groups.push(...children);\n } else {\n groups.push(output);\n }\n } // Combine consecutive domTree.symbolNodes into a single symbolNode.\n\n\n buildCommon.tryCombineChars(groups); // If `expression` is a partial group, let the parent handle spacings\n // to avoid processing groups multiple times.\n\n if (!isRealGroup) {\n return groups;\n }\n\n let glueOptions = options;\n\n if (expression.length === 1) {\n const node = expression[0];\n\n if (node.type === \"sizing\") {\n glueOptions = options.havingSize(node.size);\n } else if (node.type === \"styling\") {\n glueOptions = options.havingStyle(styleMap[node.style]);\n }\n } // Dummy spans for determining spacings between surrounding atoms.\n // If `expression` has no atoms on the left or right, class \"leftmost\"\n // or \"rightmost\", respectively, is used to indicate it.\n\n\n const dummyPrev = buildHTML_makeSpan([surrounding[0] || \"leftmost\"], [], options);\n const dummyNext = buildHTML_makeSpan([surrounding[1] || \"rightmost\"], [], options); // TODO: These code assumes that a node's math class is the first element\n // of its `classes` array. A later cleanup should ensure this, for\n // instance by changing the signature of `makeSpan`.\n // Before determining what spaces to insert, perform bin cancellation.\n // Binary operators change to ordinary symbols in some contexts.\n\n const isRoot = isRealGroup === \"root\";\n traverseNonSpaceNodes(groups, (node, prev) => {\n const prevType = prev.classes[0];\n const type = node.classes[0];\n\n if (prevType === \"mbin\" && utils.contains(binRightCanceller, type)) {\n prev.classes[0] = \"mord\";\n } else if (type === \"mbin\" && utils.contains(binLeftCanceller, prevType)) {\n node.classes[0] = \"mord\";\n }\n }, {\n node: dummyPrev\n }, dummyNext, isRoot);\n traverseNonSpaceNodes(groups, (node, prev) => {\n const prevType = getTypeOfDomTree(prev);\n const type = getTypeOfDomTree(node); // 'mtight' indicates that the node is script or scriptscript style.\n\n const space = prevType && type ? node.hasClass(\"mtight\") ? tightSpacings[prevType][type] : spacings[prevType][type] : null;\n\n if (space) {\n // Insert glue (spacing) after the `prev`.\n return buildCommon.makeGlue(space, glueOptions);\n }\n }, {\n node: dummyPrev\n }, dummyNext, isRoot);\n return groups;\n}; // Depth-first traverse non-space `nodes`, calling `callback` with the current and\n// previous node as arguments, optionally returning a node to insert after the\n// previous node. `prev` is an object with the previous node and `insertAfter`\n// function to insert after it. `next` is a node that will be added to the right.\n// Used for bin cancellation and inserting spacings.\n\nconst traverseNonSpaceNodes = function (nodes, callback, prev, next, isRoot) {\n if (next) {\n // temporarily append the right node, if exists\n nodes.push(next);\n }\n\n let i = 0;\n\n for (; i < nodes.length; i++) {\n const node = nodes[i];\n const partialGroup = checkPartialGroup(node);\n\n if (partialGroup) {\n // Recursive DFS\n // $FlowFixMe: make nodes a $ReadOnlyArray by returning a new array\n traverseNonSpaceNodes(partialGroup.children, callback, prev, null, isRoot);\n continue;\n } // Ignore explicit spaces (e.g., \\;, \\,) when determining what implicit\n // spacing should go between atoms of different classes\n\n\n const nonspace = !node.hasClass(\"mspace\");\n\n if (nonspace) {\n const result = callback(node, prev.node);\n\n if (result) {\n if (prev.insertAfter) {\n prev.insertAfter(result);\n } else {\n // insert at front\n nodes.unshift(result);\n i++;\n }\n }\n }\n\n if (nonspace) {\n prev.node = node;\n } else if (isRoot && node.hasClass(\"newline\")) {\n prev.node = buildHTML_makeSpan([\"leftmost\"]); // treat like beginning of line\n }\n\n prev.insertAfter = (index => n => {\n nodes.splice(index + 1, 0, n);\n i++;\n })(i);\n }\n\n if (next) {\n nodes.pop();\n }\n}; // Check if given node is a partial group, i.e., does not affect spacing around.\n\n\nconst checkPartialGroup = function (node) {\n if (node instanceof DocumentFragment || node instanceof Anchor || node instanceof Span && node.hasClass(\"enclosing\")) {\n return node;\n }\n\n return null;\n}; // Return the outermost node of a domTree.\n\n\nconst getOutermostNode = function (node, side) {\n const partialGroup = checkPartialGroup(node);\n\n if (partialGroup) {\n const children = partialGroup.children;\n\n if (children.length) {\n if (side === \"right\") {\n return getOutermostNode(children[children.length - 1], \"right\");\n } else if (side === \"left\") {\n return getOutermostNode(children[0], \"left\");\n }\n }\n }\n\n return node;\n}; // Return math atom class (mclass) of a domTree.\n// If `side` is given, it will get the type of the outermost node at given side.\n\n\nconst getTypeOfDomTree = function (node, side) {\n if (!node) {\n return null;\n }\n\n if (side) {\n node = getOutermostNode(node, side);\n } // This makes a lot of assumptions as to where the type of atom\n // appears. We should do a better job of enforcing this.\n\n\n return DomEnum[node.classes[0]] || null;\n};\nconst makeNullDelimiter = function (options, classes) {\n const moreClasses = [\"nulldelimiter\"].concat(options.baseSizingClasses());\n return buildHTML_makeSpan(classes.concat(moreClasses));\n};\n/**\n * buildGroup is the function that takes a group and calls the correct groupType\n * function for it. It also handles the interaction of size and style changes\n * between parents and children.\n */\n\nconst buildGroup = function (group, options, baseOptions) {\n if (!group) {\n return buildHTML_makeSpan();\n }\n\n if (_htmlGroupBuilders[group.type]) {\n // Call the groupBuilders function\n // $FlowFixMe\n let groupNode = _htmlGroupBuilders[group.type](group, options); // If the size changed between the parent and the current group, account\n // for that size difference.\n\n if (baseOptions && options.size !== baseOptions.size) {\n groupNode = buildHTML_makeSpan(options.sizingClasses(baseOptions), [groupNode], options);\n const multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier;\n groupNode.height *= multiplier;\n groupNode.depth *= multiplier;\n }\n\n return groupNode;\n } else {\n throw new src_ParseError(\"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n/**\n * Combine an array of HTML DOM nodes (e.g., the output of `buildExpression`)\n * into an unbreakable HTML node of class .base, with proper struts to\n * guarantee correct vertical extent. `buildHTML` calls this repeatedly to\n * make up the entire expression as a sequence of unbreakable units.\n */\n\nfunction buildHTMLUnbreakable(children, options) {\n // Compute height and depth of this chunk.\n const body = buildHTML_makeSpan([\"base\"], children, options); // Add strut, which ensures that the top of the HTML element falls at\n // the height of the expression, and the bottom of the HTML element\n // falls at the depth of the expression.\n\n const strut = buildHTML_makeSpan([\"strut\"]);\n strut.style.height = makeEm(body.height + body.depth);\n\n if (body.depth) {\n strut.style.verticalAlign = makeEm(-body.depth);\n }\n\n body.children.unshift(strut);\n return body;\n}\n/**\n * Take an entire parse tree, and build it into an appropriate set of HTML\n * nodes.\n */\n\n\nfunction buildHTML(tree, options) {\n // Strip off outer tag wrapper for processing below.\n let tag = null;\n\n if (tree.length === 1 && tree[0].type === \"tag\") {\n tag = tree[0].tag;\n tree = tree[0].body;\n } // Build the expression contained in the tree\n\n\n const expression = buildExpression(tree, options, \"root\");\n let eqnNum;\n\n if (expression.length === 2 && expression[1].hasClass(\"tag\")) {\n // An environment with automatic equation numbers, e.g. {gather}.\n eqnNum = expression.pop();\n }\n\n const children = []; // Create one base node for each chunk between potential line breaks.\n // The TeXBook [p.173] says \"A formula will be broken only after a\n // relation symbol like $=$ or $<$ or $\\rightarrow$, or after a binary\n // operation symbol like $+$ or $-$ or $\\times$, where the relation or\n // binary operation is on the ``outer level'' of the formula (i.e., not\n // enclosed in {...} and not part of an \\over construction).\"\n\n let parts = [];\n\n for (let i = 0; i < expression.length; i++) {\n parts.push(expression[i]);\n\n if (expression[i].hasClass(\"mbin\") || expression[i].hasClass(\"mrel\") || expression[i].hasClass(\"allowbreak\")) {\n // Put any post-operator glue on same line as operator.\n // Watch for \\nobreak along the way, and stop at \\newline.\n let nobreak = false;\n\n while (i < expression.length - 1 && expression[i + 1].hasClass(\"mspace\") && !expression[i + 1].hasClass(\"newline\")) {\n i++;\n parts.push(expression[i]);\n\n if (expression[i].hasClass(\"nobreak\")) {\n nobreak = true;\n }\n } // Don't allow break if \\nobreak among the post-operator glue.\n\n\n if (!nobreak) {\n children.push(buildHTMLUnbreakable(parts, options));\n parts = [];\n }\n } else if (expression[i].hasClass(\"newline\")) {\n // Write the line except the newline\n parts.pop();\n\n if (parts.length > 0) {\n children.push(buildHTMLUnbreakable(parts, options));\n parts = [];\n } // Put the newline at the top level\n\n\n children.push(expression[i]);\n }\n }\n\n if (parts.length > 0) {\n children.push(buildHTMLUnbreakable(parts, options));\n } // Now, if there was a tag, build it too and append it as a final child.\n\n\n let tagChild;\n\n if (tag) {\n tagChild = buildHTMLUnbreakable(buildExpression(tag, options, true));\n tagChild.classes = [\"tag\"];\n children.push(tagChild);\n } else if (eqnNum) {\n children.push(eqnNum);\n }\n\n const htmlNode = buildHTML_makeSpan([\"katex-html\"], children);\n htmlNode.setAttribute(\"aria-hidden\", \"true\"); // Adjust the strut of the tag to be the maximum height of all children\n // (the height of the enclosing htmlNode) for proper vertical alignment.\n\n if (tagChild) {\n const strut = tagChild.children[0];\n strut.style.height = makeEm(htmlNode.height + htmlNode.depth);\n\n if (htmlNode.depth) {\n strut.style.verticalAlign = makeEm(-htmlNode.depth);\n }\n }\n\n return htmlNode;\n}\n;// CONCATENATED MODULE: ./src/mathMLTree.js\n/**\n * These objects store data about MathML nodes. This is the MathML equivalent\n * of the types in domTree.js. Since MathML handles its own rendering, and\n * since we're mainly using MathML to improve accessibility, we don't manage\n * any of the styling state that the plain DOM nodes do.\n *\n * The `toNode` and `toMarkup` functions work similarly to how they do in\n * domTree.js, creating namespaced DOM nodes and HTML text markup respectively.\n */\n\n\n\n\nfunction newDocumentFragment(children) {\n return new DocumentFragment(children);\n}\n/**\n * This node represents a general purpose MathML node of any type. The\n * constructor requires the type of node to create (for example, `\"mo\"` or\n * `\"mspace\"`, corresponding to `` and `` tags).\n */\n\nclass MathNode {\n constructor(type, children, classes) {\n this.type = void 0;\n this.attributes = void 0;\n this.children = void 0;\n this.classes = void 0;\n this.type = type;\n this.attributes = {};\n this.children = children || [];\n this.classes = classes || [];\n }\n /**\n * Sets an attribute on a MathML node. MathML depends on attributes to convey a\n * semantic content, so this is used heavily.\n */\n\n\n setAttribute(name, value) {\n this.attributes[name] = value;\n }\n /**\n * Gets an attribute on a MathML node.\n */\n\n\n getAttribute(name) {\n return this.attributes[name];\n }\n /**\n * Converts the math node into a MathML-namespaced DOM element.\n */\n\n\n toNode() {\n const node = document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", this.type);\n\n for (const attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n if (this.classes.length > 0) {\n node.className = createClass(this.classes);\n }\n\n for (let i = 0; i < this.children.length; i++) {\n node.appendChild(this.children[i].toNode());\n }\n\n return node;\n }\n /**\n * Converts the math node into an HTML markup string.\n */\n\n\n toMarkup() {\n let markup = \"<\" + this.type; // Add the attributes\n\n for (const attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n markup += \" \" + attr + \"=\\\"\";\n markup += utils.escape(this.attributes[attr]);\n markup += \"\\\"\";\n }\n }\n\n if (this.classes.length > 0) {\n markup += \" class =\\\"\" + utils.escape(createClass(this.classes)) + \"\\\"\";\n }\n\n markup += \">\";\n\n for (let i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n markup += \"\";\n return markup;\n }\n /**\n * Converts the math node into a string, similar to innerText, but escaped.\n */\n\n\n toText() {\n return this.children.map(child => child.toText()).join(\"\");\n }\n\n}\n/**\n * This node represents a piece of text.\n */\n\nclass TextNode {\n constructor(text) {\n this.text = void 0;\n this.text = text;\n }\n /**\n * Converts the text node into a DOM text node.\n */\n\n\n toNode() {\n return document.createTextNode(this.text);\n }\n /**\n * Converts the text node into escaped HTML markup\n * (representing the text itself).\n */\n\n\n toMarkup() {\n return utils.escape(this.toText());\n }\n /**\n * Converts the text node into a string\n * (representing the text itself).\n */\n\n\n toText() {\n return this.text;\n }\n\n}\n/**\n * This node represents a space, but may render as or as text,\n * depending on the width.\n */\n\nclass SpaceNode {\n /**\n * Create a Space node with width given in CSS ems.\n */\n constructor(width) {\n this.width = void 0;\n this.character = void 0;\n this.width = width; // See https://www.w3.org/TR/2000/WD-MathML2-20000328/chapter6.html\n // for a table of space-like characters. We use Unicode\n // representations instead of &LongNames; as it's not clear how to\n // make the latter via document.createTextNode.\n\n if (width >= 0.05555 && width <= 0.05556) {\n this.character = \"\\u200a\"; //  \n } else if (width >= 0.1666 && width <= 0.1667) {\n this.character = \"\\u2009\"; //  \n } else if (width >= 0.2222 && width <= 0.2223) {\n this.character = \"\\u2005\"; //  \n } else if (width >= 0.2777 && width <= 0.2778) {\n this.character = \"\\u2005\\u200a\"; //   \n } else if (width >= -0.05556 && width <= -0.05555) {\n this.character = \"\\u200a\\u2063\"; // ​\n } else if (width >= -0.1667 && width <= -0.1666) {\n this.character = \"\\u2009\\u2063\"; // ​\n } else if (width >= -0.2223 && width <= -0.2222) {\n this.character = \"\\u205f\\u2063\"; // ​\n } else if (width >= -0.2778 && width <= -0.2777) {\n this.character = \"\\u2005\\u2063\"; // ​\n } else {\n this.character = null;\n }\n }\n /**\n * Converts the math node into a MathML-namespaced DOM element.\n */\n\n\n toNode() {\n if (this.character) {\n return document.createTextNode(this.character);\n } else {\n const node = document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", \"mspace\");\n node.setAttribute(\"width\", makeEm(this.width));\n return node;\n }\n }\n /**\n * Converts the math node into an HTML markup string.\n */\n\n\n toMarkup() {\n if (this.character) {\n return \"\" + this.character + \"\";\n } else {\n return \"\";\n }\n }\n /**\n * Converts the math node into a string, similar to innerText.\n */\n\n\n toText() {\n if (this.character) {\n return this.character;\n } else {\n return \" \";\n }\n }\n\n}\n\n/* harmony default export */ var mathMLTree = ({\n MathNode,\n TextNode,\n SpaceNode,\n newDocumentFragment\n});\n;// CONCATENATED MODULE: ./src/buildMathML.js\n/**\n * This file converts a parse tree into a corresponding MathML tree. The main\n * entry point is the `buildMathML` function, which takes a parse tree from the\n * parser.\n */\n\n\n\n\n\n\n\n\n\n/**\n * Takes a symbol and converts it into a MathML text node after performing\n * optional replacement from symbols.js.\n */\nconst makeText = function (text, mode, options) {\n if (src_symbols[mode][text] && src_symbols[mode][text].replace && text.charCodeAt(0) !== 0xD835 && !(ligatures.hasOwnProperty(text) && options && (options.fontFamily && options.fontFamily.slice(4, 6) === \"tt\" || options.font && options.font.slice(4, 6) === \"tt\"))) {\n text = src_symbols[mode][text].replace;\n }\n\n return new mathMLTree.TextNode(text);\n};\n/**\n * Wrap the given array of nodes in an node if needed, i.e.,\n * unless the array has length 1. Always returns a single node.\n */\n\nconst makeRow = function (body) {\n if (body.length === 1) {\n return body[0];\n } else {\n return new mathMLTree.MathNode(\"mrow\", body);\n }\n};\n/**\n * Returns the math variant as a string or null if none is required.\n */\n\nconst getVariant = function (group, options) {\n // Handle \\text... font specifiers as best we can.\n // MathML has a limited list of allowable mathvariant specifiers; see\n // https://www.w3.org/TR/MathML3/chapter3.html#presm.commatt\n if (options.fontFamily === \"texttt\") {\n return \"monospace\";\n } else if (options.fontFamily === \"textsf\") {\n if (options.fontShape === \"textit\" && options.fontWeight === \"textbf\") {\n return \"sans-serif-bold-italic\";\n } else if (options.fontShape === \"textit\") {\n return \"sans-serif-italic\";\n } else if (options.fontWeight === \"textbf\") {\n return \"bold-sans-serif\";\n } else {\n return \"sans-serif\";\n }\n } else if (options.fontShape === \"textit\" && options.fontWeight === \"textbf\") {\n return \"bold-italic\";\n } else if (options.fontShape === \"textit\") {\n return \"italic\";\n } else if (options.fontWeight === \"textbf\") {\n return \"bold\";\n }\n\n const font = options.font;\n\n if (!font || font === \"mathnormal\") {\n return null;\n }\n\n const mode = group.mode;\n\n if (font === \"mathit\") {\n return \"italic\";\n } else if (font === \"boldsymbol\") {\n return group.type === \"textord\" ? \"bold\" : \"bold-italic\";\n } else if (font === \"mathbf\") {\n return \"bold\";\n } else if (font === \"mathbb\") {\n return \"double-struck\";\n } else if (font === \"mathfrak\") {\n return \"fraktur\";\n } else if (font === \"mathscr\" || font === \"mathcal\") {\n // MathML makes no distinction between script and calligraphic\n return \"script\";\n } else if (font === \"mathsf\") {\n return \"sans-serif\";\n } else if (font === \"mathtt\") {\n return \"monospace\";\n }\n\n let text = group.text;\n\n if (utils.contains([\"\\\\imath\", \"\\\\jmath\"], text)) {\n return null;\n }\n\n if (src_symbols[mode][text] && src_symbols[mode][text].replace) {\n text = src_symbols[mode][text].replace;\n }\n\n const fontName = buildCommon.fontMap[font].fontName;\n\n if (getCharacterMetrics(text, fontName, mode)) {\n return buildCommon.fontMap[font].variant;\n }\n\n return null;\n};\n/**\n * Takes a list of nodes, builds them, and returns a list of the generated\n * MathML nodes. Also combine consecutive outputs into a single\n * tag.\n */\n\nconst buildMathML_buildExpression = function (expression, options, isOrdgroup) {\n if (expression.length === 1) {\n const group = buildMathML_buildGroup(expression[0], options);\n\n if (isOrdgroup && group instanceof MathNode && group.type === \"mo\") {\n // When TeX writers want to suppress spacing on an operator,\n // they often put the operator by itself inside braces.\n group.setAttribute(\"lspace\", \"0em\");\n group.setAttribute(\"rspace\", \"0em\");\n }\n\n return [group];\n }\n\n const groups = [];\n let lastGroup;\n\n for (let i = 0; i < expression.length; i++) {\n const group = buildMathML_buildGroup(expression[i], options);\n\n if (group instanceof MathNode && lastGroup instanceof MathNode) {\n // Concatenate adjacent s\n if (group.type === 'mtext' && lastGroup.type === 'mtext' && group.getAttribute('mathvariant') === lastGroup.getAttribute('mathvariant')) {\n lastGroup.children.push(...group.children);\n continue; // Concatenate adjacent s\n } else if (group.type === 'mn' && lastGroup.type === 'mn') {\n lastGroup.children.push(...group.children);\n continue; // Concatenate ... followed by .\n } else if (group.type === 'mi' && group.children.length === 1 && lastGroup.type === 'mn') {\n const child = group.children[0];\n\n if (child instanceof TextNode && child.text === '.') {\n lastGroup.children.push(...group.children);\n continue;\n }\n } else if (lastGroup.type === 'mi' && lastGroup.children.length === 1) {\n const lastChild = lastGroup.children[0];\n\n if (lastChild instanceof TextNode && lastChild.text === '\\u0338' && (group.type === 'mo' || group.type === 'mi' || group.type === 'mn')) {\n const child = group.children[0];\n\n if (child instanceof TextNode && child.text.length > 0) {\n // Overlay with combining character long solidus\n child.text = child.text.slice(0, 1) + \"\\u0338\" + child.text.slice(1);\n groups.pop();\n }\n }\n }\n }\n\n groups.push(group);\n lastGroup = group;\n }\n\n return groups;\n};\n/**\n * Equivalent to buildExpression, but wraps the elements in an \n * if there's more than one. Returns a single node instead of an array.\n */\n\nconst buildExpressionRow = function (expression, options, isOrdgroup) {\n return makeRow(buildMathML_buildExpression(expression, options, isOrdgroup));\n};\n/**\n * Takes a group from the parser and calls the appropriate groupBuilders function\n * on it to produce a MathML node.\n */\n\nconst buildMathML_buildGroup = function (group, options) {\n if (!group) {\n return new mathMLTree.MathNode(\"mrow\");\n }\n\n if (_mathmlGroupBuilders[group.type]) {\n // Call the groupBuilders function\n // $FlowFixMe\n const result = _mathmlGroupBuilders[group.type](group, options); // $FlowFixMe\n\n return result;\n } else {\n throw new src_ParseError(\"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n/**\n * Takes a full parse tree and settings and builds a MathML representation of\n * it. In particular, we put the elements from building the parse tree into a\n * tag so we can also include that TeX source as an annotation.\n *\n * Note that we actually return a domTree element with a `` inside it so\n * we can do appropriate styling.\n */\n\nfunction buildMathML(tree, texExpression, options, isDisplayMode, forMathmlOnly) {\n const expression = buildMathML_buildExpression(tree, options); // TODO: Make a pass thru the MathML similar to buildHTML.traverseNonSpaceNodes\n // and add spacing nodes. This is necessary only adjacent to math operators\n // like \\sin or \\lim or to subsup elements that contain math operators.\n // MathML takes care of the other spacing issues.\n // Wrap up the expression in an mrow so it is presented in the semantics\n // tag correctly, unless it's a single or .\n\n let wrapper;\n\n if (expression.length === 1 && expression[0] instanceof MathNode && utils.contains([\"mrow\", \"mtable\"], expression[0].type)) {\n wrapper = expression[0];\n } else {\n wrapper = new mathMLTree.MathNode(\"mrow\", expression);\n } // Build a TeX annotation of the source\n\n\n const annotation = new mathMLTree.MathNode(\"annotation\", [new mathMLTree.TextNode(texExpression)]);\n annotation.setAttribute(\"encoding\", \"application/x-tex\");\n const semantics = new mathMLTree.MathNode(\"semantics\", [wrapper, annotation]);\n const math = new mathMLTree.MathNode(\"math\", [semantics]);\n math.setAttribute(\"xmlns\", \"http://www.w3.org/1998/Math/MathML\");\n\n if (isDisplayMode) {\n math.setAttribute(\"display\", \"block\");\n } // You can't style nodes, so we wrap the node in a span.\n // NOTE: The span class is not typed to have nodes as children, and\n // we don't want to make the children type more generic since the children\n // of span are expected to have more fields in `buildHtml` contexts.\n\n\n const wrapperClass = forMathmlOnly ? \"katex\" : \"katex-mathml\"; // $FlowFixMe\n\n return buildCommon.makeSpan([wrapperClass], [math]);\n}\n;// CONCATENATED MODULE: ./src/buildTree.js\n\n\n\n\n\n\n\nconst optionsFromSettings = function (settings) {\n return new src_Options({\n style: settings.displayMode ? src_Style.DISPLAY : src_Style.TEXT,\n maxSize: settings.maxSize,\n minRuleThickness: settings.minRuleThickness\n });\n};\n\nconst displayWrap = function (node, settings) {\n if (settings.displayMode) {\n const classes = [\"katex-display\"];\n\n if (settings.leqno) {\n classes.push(\"leqno\");\n }\n\n if (settings.fleqn) {\n classes.push(\"fleqn\");\n }\n\n node = buildCommon.makeSpan(classes, [node]);\n }\n\n return node;\n};\n\nconst buildTree = function (tree, expression, settings) {\n const options = optionsFromSettings(settings);\n let katexNode;\n\n if (settings.output === \"mathml\") {\n return buildMathML(tree, expression, options, settings.displayMode, true);\n } else if (settings.output === \"html\") {\n const htmlNode = buildHTML(tree, options);\n katexNode = buildCommon.makeSpan([\"katex\"], [htmlNode]);\n } else {\n const mathMLNode = buildMathML(tree, expression, options, settings.displayMode, false);\n const htmlNode = buildHTML(tree, options);\n katexNode = buildCommon.makeSpan([\"katex\"], [mathMLNode, htmlNode]);\n }\n\n return displayWrap(katexNode, settings);\n};\nconst buildHTMLTree = function (tree, expression, settings) {\n const options = optionsFromSettings(settings);\n const htmlNode = buildHTML(tree, options);\n const katexNode = buildCommon.makeSpan([\"katex\"], [htmlNode]);\n return displayWrap(katexNode, settings);\n};\n/* harmony default export */ var src_buildTree = ((/* unused pure expression or super */ null && (buildTree)));\n;// CONCATENATED MODULE: ./src/stretchy.js\n/**\n * This file provides support to buildMathML.js and buildHTML.js\n * for stretchy wide elements rendered from SVG files\n * and other CSS trickery.\n */\n\n\n\n\n\nconst stretchyCodePoint = {\n widehat: \"^\",\n widecheck: \"ˇ\",\n widetilde: \"~\",\n utilde: \"~\",\n overleftarrow: \"\\u2190\",\n underleftarrow: \"\\u2190\",\n xleftarrow: \"\\u2190\",\n overrightarrow: \"\\u2192\",\n underrightarrow: \"\\u2192\",\n xrightarrow: \"\\u2192\",\n underbrace: \"\\u23df\",\n overbrace: \"\\u23de\",\n overgroup: \"\\u23e0\",\n undergroup: \"\\u23e1\",\n overleftrightarrow: \"\\u2194\",\n underleftrightarrow: \"\\u2194\",\n xleftrightarrow: \"\\u2194\",\n Overrightarrow: \"\\u21d2\",\n xRightarrow: \"\\u21d2\",\n overleftharpoon: \"\\u21bc\",\n xleftharpoonup: \"\\u21bc\",\n overrightharpoon: \"\\u21c0\",\n xrightharpoonup: \"\\u21c0\",\n xLeftarrow: \"\\u21d0\",\n xLeftrightarrow: \"\\u21d4\",\n xhookleftarrow: \"\\u21a9\",\n xhookrightarrow: \"\\u21aa\",\n xmapsto: \"\\u21a6\",\n xrightharpoondown: \"\\u21c1\",\n xleftharpoondown: \"\\u21bd\",\n xrightleftharpoons: \"\\u21cc\",\n xleftrightharpoons: \"\\u21cb\",\n xtwoheadleftarrow: \"\\u219e\",\n xtwoheadrightarrow: \"\\u21a0\",\n xlongequal: \"=\",\n xtofrom: \"\\u21c4\",\n xrightleftarrows: \"\\u21c4\",\n xrightequilibrium: \"\\u21cc\",\n // Not a perfect match.\n xleftequilibrium: \"\\u21cb\",\n // None better available.\n \"\\\\cdrightarrow\": \"\\u2192\",\n \"\\\\cdleftarrow\": \"\\u2190\",\n \"\\\\cdlongequal\": \"=\"\n};\n\nconst mathMLnode = function (label) {\n const node = new mathMLTree.MathNode(\"mo\", [new mathMLTree.TextNode(stretchyCodePoint[label.replace(/^\\\\/, '')])]);\n node.setAttribute(\"stretchy\", \"true\");\n return node;\n}; // Many of the KaTeX SVG images have been adapted from glyphs in KaTeX fonts.\n// Copyright (c) 2009-2010, Design Science, Inc. ()\n// Copyright (c) 2014-2017 Khan Academy ()\n// Licensed under the SIL Open Font License, Version 1.1.\n// See \\nhttp://scripts.sil.org/OFL\n// Very Long SVGs\n// Many of the KaTeX stretchy wide elements use a long SVG image and an\n// overflow: hidden tactic to achieve a stretchy image while avoiding\n// distortion of arrowheads or brace corners.\n// The SVG typically contains a very long (400 em) arrow.\n// The SVG is in a container span that has overflow: hidden, so the span\n// acts like a window that exposes only part of the SVG.\n// The SVG always has a longer, thinner aspect ratio than the container span.\n// After the SVG fills 100% of the height of the container span,\n// there is a long arrow shaft left over. That left-over shaft is not shown.\n// Instead, it is sliced off because the span's CSS has overflow: hidden.\n// Thus, the reader sees an arrow that matches the subject matter width\n// without distortion.\n// Some functions, such as \\cancel, need to vary their aspect ratio. These\n// functions do not get the overflow SVG treatment.\n// Second Brush Stroke\n// Low resolution monitors struggle to display images in fine detail.\n// So browsers apply anti-aliasing. A long straight arrow shaft therefore\n// will sometimes appear as if it has a blurred edge.\n// To mitigate this, these SVG files contain a second \"brush-stroke\" on the\n// arrow shafts. That is, a second long thin rectangular SVG path has been\n// written directly on top of each arrow shaft. This reinforcement causes\n// some of the screen pixels to display as black instead of the anti-aliased\n// gray pixel that a single path would generate. So we get arrow shafts\n// whose edges appear to be sharper.\n// In the katexImagesData object just below, the dimensions all\n// correspond to path geometry inside the relevant SVG.\n// For example, \\overrightarrow uses the same arrowhead as glyph U+2192\n// from the KaTeX Main font. The scaling factor is 1000.\n// That is, inside the font, that arrowhead is 522 units tall, which\n// corresponds to 0.522 em inside the document.\n\n\nconst katexImagesData = {\n // path(s), minWidth, height, align\n overrightarrow: [[\"rightarrow\"], 0.888, 522, \"xMaxYMin\"],\n overleftarrow: [[\"leftarrow\"], 0.888, 522, \"xMinYMin\"],\n underrightarrow: [[\"rightarrow\"], 0.888, 522, \"xMaxYMin\"],\n underleftarrow: [[\"leftarrow\"], 0.888, 522, \"xMinYMin\"],\n xrightarrow: [[\"rightarrow\"], 1.469, 522, \"xMaxYMin\"],\n \"\\\\cdrightarrow\": [[\"rightarrow\"], 3.0, 522, \"xMaxYMin\"],\n // CD minwwidth2.5pc\n xleftarrow: [[\"leftarrow\"], 1.469, 522, \"xMinYMin\"],\n \"\\\\cdleftarrow\": [[\"leftarrow\"], 3.0, 522, \"xMinYMin\"],\n Overrightarrow: [[\"doublerightarrow\"], 0.888, 560, \"xMaxYMin\"],\n xRightarrow: [[\"doublerightarrow\"], 1.526, 560, \"xMaxYMin\"],\n xLeftarrow: [[\"doubleleftarrow\"], 1.526, 560, \"xMinYMin\"],\n overleftharpoon: [[\"leftharpoon\"], 0.888, 522, \"xMinYMin\"],\n xleftharpoonup: [[\"leftharpoon\"], 0.888, 522, \"xMinYMin\"],\n xleftharpoondown: [[\"leftharpoondown\"], 0.888, 522, \"xMinYMin\"],\n overrightharpoon: [[\"rightharpoon\"], 0.888, 522, \"xMaxYMin\"],\n xrightharpoonup: [[\"rightharpoon\"], 0.888, 522, \"xMaxYMin\"],\n xrightharpoondown: [[\"rightharpoondown\"], 0.888, 522, \"xMaxYMin\"],\n xlongequal: [[\"longequal\"], 0.888, 334, \"xMinYMin\"],\n \"\\\\cdlongequal\": [[\"longequal\"], 3.0, 334, \"xMinYMin\"],\n xtwoheadleftarrow: [[\"twoheadleftarrow\"], 0.888, 334, \"xMinYMin\"],\n xtwoheadrightarrow: [[\"twoheadrightarrow\"], 0.888, 334, \"xMaxYMin\"],\n overleftrightarrow: [[\"leftarrow\", \"rightarrow\"], 0.888, 522],\n overbrace: [[\"leftbrace\", \"midbrace\", \"rightbrace\"], 1.6, 548],\n underbrace: [[\"leftbraceunder\", \"midbraceunder\", \"rightbraceunder\"], 1.6, 548],\n underleftrightarrow: [[\"leftarrow\", \"rightarrow\"], 0.888, 522],\n xleftrightarrow: [[\"leftarrow\", \"rightarrow\"], 1.75, 522],\n xLeftrightarrow: [[\"doubleleftarrow\", \"doublerightarrow\"], 1.75, 560],\n xrightleftharpoons: [[\"leftharpoondownplus\", \"rightharpoonplus\"], 1.75, 716],\n xleftrightharpoons: [[\"leftharpoonplus\", \"rightharpoondownplus\"], 1.75, 716],\n xhookleftarrow: [[\"leftarrow\", \"righthook\"], 1.08, 522],\n xhookrightarrow: [[\"lefthook\", \"rightarrow\"], 1.08, 522],\n overlinesegment: [[\"leftlinesegment\", \"rightlinesegment\"], 0.888, 522],\n underlinesegment: [[\"leftlinesegment\", \"rightlinesegment\"], 0.888, 522],\n overgroup: [[\"leftgroup\", \"rightgroup\"], 0.888, 342],\n undergroup: [[\"leftgroupunder\", \"rightgroupunder\"], 0.888, 342],\n xmapsto: [[\"leftmapsto\", \"rightarrow\"], 1.5, 522],\n xtofrom: [[\"leftToFrom\", \"rightToFrom\"], 1.75, 528],\n // The next three arrows are from the mhchem package.\n // In mhchem.sty, min-length is 2.0em. But these arrows might appear in the\n // document as \\xrightarrow or \\xrightleftharpoons. Those have\n // min-length = 1.75em, so we set min-length on these next three to match.\n xrightleftarrows: [[\"baraboveleftarrow\", \"rightarrowabovebar\"], 1.75, 901],\n xrightequilibrium: [[\"baraboveshortleftharpoon\", \"rightharpoonaboveshortbar\"], 1.75, 716],\n xleftequilibrium: [[\"shortbaraboveleftharpoon\", \"shortrightharpoonabovebar\"], 1.75, 716]\n};\n\nconst groupLength = function (arg) {\n if (arg.type === \"ordgroup\") {\n return arg.body.length;\n } else {\n return 1;\n }\n};\n\nconst svgSpan = function (group, options) {\n // Create a span with inline SVG for the element.\n function buildSvgSpan_() {\n let viewBoxWidth = 400000; // default\n\n const label = group.label.slice(1);\n\n if (utils.contains([\"widehat\", \"widecheck\", \"widetilde\", \"utilde\"], label)) {\n // Each type in the `if` statement corresponds to one of the ParseNode\n // types below. This narrowing is required to access `grp.base`.\n // $FlowFixMe\n const grp = group; // There are four SVG images available for each function.\n // Choose a taller image when there are more characters.\n\n const numChars = groupLength(grp.base);\n let viewBoxHeight;\n let pathName;\n let height;\n\n if (numChars > 5) {\n if (label === \"widehat\" || label === \"widecheck\") {\n viewBoxHeight = 420;\n viewBoxWidth = 2364;\n height = 0.42;\n pathName = label + \"4\";\n } else {\n viewBoxHeight = 312;\n viewBoxWidth = 2340;\n height = 0.34;\n pathName = \"tilde4\";\n }\n } else {\n const imgIndex = [1, 1, 2, 2, 3, 3][numChars];\n\n if (label === \"widehat\" || label === \"widecheck\") {\n viewBoxWidth = [0, 1062, 2364, 2364, 2364][imgIndex];\n viewBoxHeight = [0, 239, 300, 360, 420][imgIndex];\n height = [0, 0.24, 0.3, 0.3, 0.36, 0.42][imgIndex];\n pathName = label + imgIndex;\n } else {\n viewBoxWidth = [0, 600, 1033, 2339, 2340][imgIndex];\n viewBoxHeight = [0, 260, 286, 306, 312][imgIndex];\n height = [0, 0.26, 0.286, 0.3, 0.306, 0.34][imgIndex];\n pathName = \"tilde\" + imgIndex;\n }\n }\n\n const path = new PathNode(pathName);\n const svgNode = new SvgNode([path], {\n \"width\": \"100%\",\n \"height\": makeEm(height),\n \"viewBox\": \"0 0 \" + viewBoxWidth + \" \" + viewBoxHeight,\n \"preserveAspectRatio\": \"none\"\n });\n return {\n span: buildCommon.makeSvgSpan([], [svgNode], options),\n minWidth: 0,\n height\n };\n } else {\n const spans = [];\n const data = katexImagesData[label];\n const [paths, minWidth, viewBoxHeight] = data;\n const height = viewBoxHeight / 1000;\n const numSvgChildren = paths.length;\n let widthClasses;\n let aligns;\n\n if (numSvgChildren === 1) {\n // $FlowFixMe: All these cases must be of the 4-tuple type.\n const align1 = data[3];\n widthClasses = [\"hide-tail\"];\n aligns = [align1];\n } else if (numSvgChildren === 2) {\n widthClasses = [\"halfarrow-left\", \"halfarrow-right\"];\n aligns = [\"xMinYMin\", \"xMaxYMin\"];\n } else if (numSvgChildren === 3) {\n widthClasses = [\"brace-left\", \"brace-center\", \"brace-right\"];\n aligns = [\"xMinYMin\", \"xMidYMin\", \"xMaxYMin\"];\n } else {\n throw new Error(\"Correct katexImagesData or update code here to support\\n \" + numSvgChildren + \" children.\");\n }\n\n for (let i = 0; i < numSvgChildren; i++) {\n const path = new PathNode(paths[i]);\n const svgNode = new SvgNode([path], {\n \"width\": \"400em\",\n \"height\": makeEm(height),\n \"viewBox\": \"0 0 \" + viewBoxWidth + \" \" + viewBoxHeight,\n \"preserveAspectRatio\": aligns[i] + \" slice\"\n });\n const span = buildCommon.makeSvgSpan([widthClasses[i]], [svgNode], options);\n\n if (numSvgChildren === 1) {\n return {\n span,\n minWidth,\n height\n };\n } else {\n span.style.height = makeEm(height);\n spans.push(span);\n }\n }\n\n return {\n span: buildCommon.makeSpan([\"stretchy\"], spans, options),\n minWidth,\n height\n };\n }\n } // buildSvgSpan_()\n\n\n const {\n span,\n minWidth,\n height\n } = buildSvgSpan_(); // Note that we are returning span.depth = 0.\n // Any adjustments relative to the baseline must be done in buildHTML.\n\n span.height = height;\n span.style.height = makeEm(height);\n\n if (minWidth > 0) {\n span.style.minWidth = makeEm(minWidth);\n }\n\n return span;\n};\n\nconst encloseSpan = function (inner, label, topPad, bottomPad, options) {\n // Return an image span for \\cancel, \\bcancel, \\xcancel, \\fbox, or \\angl\n let img;\n const totalHeight = inner.height + inner.depth + topPad + bottomPad;\n\n if (/fbox|color|angl/.test(label)) {\n img = buildCommon.makeSpan([\"stretchy\", label], [], options);\n\n if (label === \"fbox\") {\n const color = options.color && options.getColor();\n\n if (color) {\n img.style.borderColor = color;\n }\n }\n } else {\n // \\cancel, \\bcancel, or \\xcancel\n // Since \\cancel's SVG is inline and it omits the viewBox attribute,\n // its stroke-width will not vary with span area.\n const lines = [];\n\n if (/^[bx]cancel$/.test(label)) {\n lines.push(new LineNode({\n \"x1\": \"0\",\n \"y1\": \"0\",\n \"x2\": \"100%\",\n \"y2\": \"100%\",\n \"stroke-width\": \"0.046em\"\n }));\n }\n\n if (/^x?cancel$/.test(label)) {\n lines.push(new LineNode({\n \"x1\": \"0\",\n \"y1\": \"100%\",\n \"x2\": \"100%\",\n \"y2\": \"0\",\n \"stroke-width\": \"0.046em\"\n }));\n }\n\n const svgNode = new SvgNode(lines, {\n \"width\": \"100%\",\n \"height\": makeEm(totalHeight)\n });\n img = buildCommon.makeSvgSpan([], [svgNode], options);\n }\n\n img.height = totalHeight;\n img.style.height = makeEm(totalHeight);\n return img;\n};\n\n/* harmony default export */ var stretchy = ({\n encloseSpan,\n mathMLnode,\n svgSpan\n});\n;// CONCATENATED MODULE: ./src/parseNode.js\n\n\n/**\n * Asserts that the node is of the given type and returns it with stricter\n * typing. Throws if the node's type does not match.\n */\nfunction assertNodeType(node, type) {\n if (!node || node.type !== type) {\n throw new Error(\"Expected node of type \" + type + \", but got \" + (node ? \"node of type \" + node.type : String(node)));\n } // $FlowFixMe, >=0.125\n\n\n return node;\n}\n/**\n * Returns the node more strictly typed iff it is of the given type. Otherwise,\n * returns null.\n */\n\nfunction assertSymbolNodeType(node) {\n const typedNode = checkSymbolNodeType(node);\n\n if (!typedNode) {\n throw new Error(\"Expected node of symbol group type, but got \" + (node ? \"node of type \" + node.type : String(node)));\n }\n\n return typedNode;\n}\n/**\n * Returns the node more strictly typed iff it is of the given type. Otherwise,\n * returns null.\n */\n\nfunction checkSymbolNodeType(node) {\n if (node && (node.type === \"atom\" || NON_ATOMS.hasOwnProperty(node.type))) {\n // $FlowFixMe\n return node;\n }\n\n return null;\n}\n;// CONCATENATED MODULE: ./src/functions/accent.js\n\n\n\n\n\n\n\n\n\n\n// NOTE: Unlike most `htmlBuilder`s, this one handles not only \"accent\", but\n// also \"supsub\" since an accent can affect super/subscripting.\nconst htmlBuilder = (grp, options) => {\n // Accents are handled in the TeXbook pg. 443, rule 12.\n let base;\n let group;\n let supSubGroup;\n\n if (grp && grp.type === \"supsub\") {\n // If our base is a character box, and we have superscripts and\n // subscripts, the supsub will defer to us. In particular, we want\n // to attach the superscripts and subscripts to the inner body (so\n // that the position of the superscripts and subscripts won't be\n // affected by the height of the accent). We accomplish this by\n // sticking the base of the accent into the base of the supsub, and\n // rendering that, while keeping track of where the accent is.\n // The real accent group is the base of the supsub group\n group = assertNodeType(grp.base, \"accent\"); // The character box is the base of the accent group\n\n base = group.base; // Stick the character box into the base of the supsub group\n\n grp.base = base; // Rerender the supsub group with its new base, and store that\n // result.\n\n supSubGroup = assertSpan(buildGroup(grp, options)); // reset original base\n\n grp.base = group;\n } else {\n group = assertNodeType(grp, \"accent\");\n base = group.base;\n } // Build the base group\n\n\n const body = buildGroup(base, options.havingCrampedStyle()); // Does the accent need to shift for the skew of a character?\n\n const mustShift = group.isShifty && utils.isCharacterBox(base); // Calculate the skew of the accent. This is based on the line \"If the\n // nucleus is not a single character, let s = 0; otherwise set s to the\n // kern amount for the nucleus followed by the \\skewchar of its font.\"\n // Note that our skew metrics are just the kern between each character\n // and the skewchar.\n\n let skew = 0;\n\n if (mustShift) {\n // If the base is a character box, then we want the skew of the\n // innermost character. To do that, we find the innermost character:\n const baseChar = utils.getBaseElem(base); // Then, we render its group to get the symbol inside it\n\n const baseGroup = buildGroup(baseChar, options.havingCrampedStyle()); // Finally, we pull the skew off of the symbol.\n\n skew = assertSymbolDomNode(baseGroup).skew; // Note that we now throw away baseGroup, because the layers we\n // removed with getBaseElem might contain things like \\color which\n // we can't get rid of.\n // TODO(emily): Find a better way to get the skew\n }\n\n const accentBelow = group.label === \"\\\\c\"; // calculate the amount of space between the body and the accent\n\n let clearance = accentBelow ? body.height + body.depth : Math.min(body.height, options.fontMetrics().xHeight); // Build the accent\n\n let accentBody;\n\n if (!group.isStretchy) {\n let accent;\n let width;\n\n if (group.label === \"\\\\vec\") {\n // Before version 0.9, \\vec used the combining font glyph U+20D7.\n // But browsers, especially Safari, are not consistent in how they\n // render combining characters when not preceded by a character.\n // So now we use an SVG.\n // If Safari reforms, we should consider reverting to the glyph.\n accent = buildCommon.staticSvg(\"vec\", options);\n width = buildCommon.svgData.vec[1];\n } else {\n accent = buildCommon.makeOrd({\n mode: group.mode,\n text: group.label\n }, options, \"textord\");\n accent = assertSymbolDomNode(accent); // Remove the italic correction of the accent, because it only serves to\n // shift the accent over to a place we don't want.\n\n accent.italic = 0;\n width = accent.width;\n\n if (accentBelow) {\n clearance += accent.depth;\n }\n }\n\n accentBody = buildCommon.makeSpan([\"accent-body\"], [accent]); // \"Full\" accents expand the width of the resulting symbol to be\n // at least the width of the accent, and overlap directly onto the\n // character without any vertical offset.\n\n const accentFull = group.label === \"\\\\textcircled\";\n\n if (accentFull) {\n accentBody.classes.push('accent-full');\n clearance = body.height;\n } // Shift the accent over by the skew.\n\n\n let left = skew; // CSS defines `.katex .accent .accent-body:not(.accent-full) { width: 0 }`\n // so that the accent doesn't contribute to the bounding box.\n // We need to shift the character by its width (effectively half\n // its width) to compensate.\n\n if (!accentFull) {\n left -= width / 2;\n }\n\n accentBody.style.left = makeEm(left); // \\textcircled uses the \\bigcirc glyph, so it needs some\n // vertical adjustment to match LaTeX.\n\n if (group.label === \"\\\\textcircled\") {\n accentBody.style.top = \".2em\";\n }\n\n accentBody = buildCommon.makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: body\n }, {\n type: \"kern\",\n size: -clearance\n }, {\n type: \"elem\",\n elem: accentBody\n }]\n }, options);\n } else {\n accentBody = stretchy.svgSpan(group, options);\n accentBody = buildCommon.makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: body\n }, {\n type: \"elem\",\n elem: accentBody,\n wrapperClasses: [\"svg-align\"],\n wrapperStyle: skew > 0 ? {\n width: \"calc(100% - \" + makeEm(2 * skew) + \")\",\n marginLeft: makeEm(2 * skew)\n } : undefined\n }]\n }, options);\n }\n\n const accentWrap = buildCommon.makeSpan([\"mord\", \"accent\"], [accentBody], options);\n\n if (supSubGroup) {\n // Here, we replace the \"base\" child of the supsub with our newly\n // generated accent.\n supSubGroup.children[0] = accentWrap; // Since we don't rerun the height calculation after replacing the\n // accent, we manually recalculate height.\n\n supSubGroup.height = Math.max(accentWrap.height, supSubGroup.height); // Accents should always be ords, even when their innards are not.\n\n supSubGroup.classes[0] = \"mord\";\n return supSubGroup;\n } else {\n return accentWrap;\n }\n};\n\nconst mathmlBuilder = (group, options) => {\n const accentNode = group.isStretchy ? stretchy.mathMLnode(group.label) : new mathMLTree.MathNode(\"mo\", [makeText(group.label, group.mode)]);\n const node = new mathMLTree.MathNode(\"mover\", [buildMathML_buildGroup(group.base, options), accentNode]);\n node.setAttribute(\"accent\", \"true\");\n return node;\n};\n\nconst NON_STRETCHY_ACCENT_REGEX = new RegExp([\"\\\\acute\", \"\\\\grave\", \"\\\\ddot\", \"\\\\tilde\", \"\\\\bar\", \"\\\\breve\", \"\\\\check\", \"\\\\hat\", \"\\\\vec\", \"\\\\dot\", \"\\\\mathring\"].map(accent => \"\\\\\" + accent).join(\"|\")); // Accents\n\ndefineFunction({\n type: \"accent\",\n names: [\"\\\\acute\", \"\\\\grave\", \"\\\\ddot\", \"\\\\tilde\", \"\\\\bar\", \"\\\\breve\", \"\\\\check\", \"\\\\hat\", \"\\\\vec\", \"\\\\dot\", \"\\\\mathring\", \"\\\\widecheck\", \"\\\\widehat\", \"\\\\widetilde\", \"\\\\overrightarrow\", \"\\\\overleftarrow\", \"\\\\Overrightarrow\", \"\\\\overleftrightarrow\", \"\\\\overgroup\", \"\\\\overlinesegment\", \"\\\\overleftharpoon\", \"\\\\overrightharpoon\"],\n props: {\n numArgs: 1\n },\n handler: (context, args) => {\n const base = normalizeArgument(args[0]);\n const isStretchy = !NON_STRETCHY_ACCENT_REGEX.test(context.funcName);\n const isShifty = !isStretchy || context.funcName === \"\\\\widehat\" || context.funcName === \"\\\\widetilde\" || context.funcName === \"\\\\widecheck\";\n return {\n type: \"accent\",\n mode: context.parser.mode,\n label: context.funcName,\n isStretchy: isStretchy,\n isShifty: isShifty,\n base: base\n };\n },\n htmlBuilder,\n mathmlBuilder\n}); // Text-mode accents\n\ndefineFunction({\n type: \"accent\",\n names: [\"\\\\'\", \"\\\\`\", \"\\\\^\", \"\\\\~\", \"\\\\=\", \"\\\\u\", \"\\\\.\", '\\\\\"', \"\\\\c\", \"\\\\r\", \"\\\\H\", \"\\\\v\", \"\\\\textcircled\"],\n props: {\n numArgs: 1,\n allowedInText: true,\n allowedInMath: true,\n // unless in strict mode\n argTypes: [\"primitive\"]\n },\n handler: (context, args) => {\n const base = args[0];\n let mode = context.parser.mode;\n\n if (mode === \"math\") {\n context.parser.settings.reportNonstrict(\"mathVsTextAccents\", \"LaTeX's accent \" + context.funcName + \" works only in text mode\");\n mode = \"text\";\n }\n\n return {\n type: \"accent\",\n mode: mode,\n label: context.funcName,\n isStretchy: false,\n isShifty: true,\n base: base\n };\n },\n htmlBuilder,\n mathmlBuilder\n});\n;// CONCATENATED MODULE: ./src/functions/accentunder.js\n// Horizontal overlap functions\n\n\n\n\n\n\ndefineFunction({\n type: \"accentUnder\",\n names: [\"\\\\underleftarrow\", \"\\\\underrightarrow\", \"\\\\underleftrightarrow\", \"\\\\undergroup\", \"\\\\underlinesegment\", \"\\\\utilde\"],\n props: {\n numArgs: 1\n },\n handler: (_ref, args) => {\n let {\n parser,\n funcName\n } = _ref;\n const base = args[0];\n return {\n type: \"accentUnder\",\n mode: parser.mode,\n label: funcName,\n base: base\n };\n },\n htmlBuilder: (group, options) => {\n // Treat under accents much like underlines.\n const innerGroup = buildGroup(group.base, options);\n const accentBody = stretchy.svgSpan(group, options);\n const kern = group.label === \"\\\\utilde\" ? 0.12 : 0; // Generate the vlist, with the appropriate kerns\n\n const vlist = buildCommon.makeVList({\n positionType: \"top\",\n positionData: innerGroup.height,\n children: [{\n type: \"elem\",\n elem: accentBody,\n wrapperClasses: [\"svg-align\"]\n }, {\n type: \"kern\",\n size: kern\n }, {\n type: \"elem\",\n elem: innerGroup\n }]\n }, options);\n return buildCommon.makeSpan([\"mord\", \"accentunder\"], [vlist], options);\n },\n mathmlBuilder: (group, options) => {\n const accentNode = stretchy.mathMLnode(group.label);\n const node = new mathMLTree.MathNode(\"munder\", [buildMathML_buildGroup(group.base, options), accentNode]);\n node.setAttribute(\"accentunder\", \"true\");\n return node;\n }\n});\n;// CONCATENATED MODULE: ./src/functions/arrow.js\n\n\n\n\n\n\n\n// Helper function\nconst paddedNode = group => {\n const node = new mathMLTree.MathNode(\"mpadded\", group ? [group] : []);\n node.setAttribute(\"width\", \"+0.6em\");\n node.setAttribute(\"lspace\", \"0.3em\");\n return node;\n}; // Stretchy arrows with an optional argument\n\n\ndefineFunction({\n type: \"xArrow\",\n names: [\"\\\\xleftarrow\", \"\\\\xrightarrow\", \"\\\\xLeftarrow\", \"\\\\xRightarrow\", \"\\\\xleftrightarrow\", \"\\\\xLeftrightarrow\", \"\\\\xhookleftarrow\", \"\\\\xhookrightarrow\", \"\\\\xmapsto\", \"\\\\xrightharpoondown\", \"\\\\xrightharpoonup\", \"\\\\xleftharpoondown\", \"\\\\xleftharpoonup\", \"\\\\xrightleftharpoons\", \"\\\\xleftrightharpoons\", \"\\\\xlongequal\", \"\\\\xtwoheadrightarrow\", \"\\\\xtwoheadleftarrow\", \"\\\\xtofrom\", // The next 3 functions are here to support the mhchem extension.\n // Direct use of these functions is discouraged and may break someday.\n \"\\\\xrightleftarrows\", \"\\\\xrightequilibrium\", \"\\\\xleftequilibrium\", // The next 3 functions are here only to support the {CD} environment.\n \"\\\\\\\\cdrightarrow\", \"\\\\\\\\cdleftarrow\", \"\\\\\\\\cdlongequal\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1\n },\n\n handler(_ref, args, optArgs) {\n let {\n parser,\n funcName\n } = _ref;\n return {\n type: \"xArrow\",\n mode: parser.mode,\n label: funcName,\n body: args[0],\n below: optArgs[0]\n };\n },\n\n // Flow is unable to correctly infer the type of `group`, even though it's\n // unambiguously determined from the passed-in `type` above.\n htmlBuilder(group, options) {\n const style = options.style; // Build the argument groups in the appropriate style.\n // Ref: amsmath.dtx: \\hbox{$\\scriptstyle\\mkern#3mu{#6}\\mkern#4mu$}%\n // Some groups can return document fragments. Handle those by wrapping\n // them in a span.\n\n let newOptions = options.havingStyle(style.sup());\n const upperGroup = buildCommon.wrapFragment(buildGroup(group.body, newOptions, options), options);\n const arrowPrefix = group.label.slice(0, 2) === \"\\\\x\" ? \"x\" : \"cd\";\n upperGroup.classes.push(arrowPrefix + \"-arrow-pad\");\n let lowerGroup;\n\n if (group.below) {\n // Build the lower group\n newOptions = options.havingStyle(style.sub());\n lowerGroup = buildCommon.wrapFragment(buildGroup(group.below, newOptions, options), options);\n lowerGroup.classes.push(arrowPrefix + \"-arrow-pad\");\n }\n\n const arrowBody = stretchy.svgSpan(group, options); // Re shift: Note that stretchy.svgSpan returned arrowBody.depth = 0.\n // The point we want on the math axis is at 0.5 * arrowBody.height.\n\n const arrowShift = -options.fontMetrics().axisHeight + 0.5 * arrowBody.height; // 2 mu kern. Ref: amsmath.dtx: #7\\if0#2\\else\\mkern#2mu\\fi\n\n let upperShift = -options.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111; // 0.111 em = 2 mu\n\n if (upperGroup.depth > 0.25 || group.label === \"\\\\xleftequilibrium\") {\n upperShift -= upperGroup.depth; // shift up if depth encroaches\n } // Generate the vlist\n\n\n let vlist;\n\n if (lowerGroup) {\n const lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111;\n vlist = buildCommon.makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: upperGroup,\n shift: upperShift\n }, {\n type: \"elem\",\n elem: arrowBody,\n shift: arrowShift\n }, {\n type: \"elem\",\n elem: lowerGroup,\n shift: lowerShift\n }]\n }, options);\n } else {\n vlist = buildCommon.makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: upperGroup,\n shift: upperShift\n }, {\n type: \"elem\",\n elem: arrowBody,\n shift: arrowShift\n }]\n }, options);\n } // $FlowFixMe: Replace this with passing \"svg-align\" into makeVList.\n\n\n vlist.children[0].children[0].children[1].classes.push(\"svg-align\");\n return buildCommon.makeSpan([\"mrel\", \"x-arrow\"], [vlist], options);\n },\n\n mathmlBuilder(group, options) {\n const arrowNode = stretchy.mathMLnode(group.label);\n arrowNode.setAttribute(\"minsize\", group.label.charAt(0) === \"x\" ? \"1.75em\" : \"3.0em\");\n let node;\n\n if (group.body) {\n const upperNode = paddedNode(buildMathML_buildGroup(group.body, options));\n\n if (group.below) {\n const lowerNode = paddedNode(buildMathML_buildGroup(group.below, options));\n node = new mathMLTree.MathNode(\"munderover\", [arrowNode, lowerNode, upperNode]);\n } else {\n node = new mathMLTree.MathNode(\"mover\", [arrowNode, upperNode]);\n }\n } else if (group.below) {\n const lowerNode = paddedNode(buildMathML_buildGroup(group.below, options));\n node = new mathMLTree.MathNode(\"munder\", [arrowNode, lowerNode]);\n } else {\n // This should never happen.\n // Parser.js throws an error if there is no argument.\n node = paddedNode();\n node = new mathMLTree.MathNode(\"mover\", [arrowNode, node]);\n }\n\n return node;\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/mclass.js\n\n\n\n\n\n\nconst mclass_makeSpan = buildCommon.makeSpan;\n\nfunction mclass_htmlBuilder(group, options) {\n const elements = buildExpression(group.body, options, true);\n return mclass_makeSpan([group.mclass], elements, options);\n}\n\nfunction mclass_mathmlBuilder(group, options) {\n let node;\n const inner = buildMathML_buildExpression(group.body, options);\n\n if (group.mclass === \"minner\") {\n node = new mathMLTree.MathNode(\"mpadded\", inner);\n } else if (group.mclass === \"mord\") {\n if (group.isCharacterBox) {\n node = inner[0];\n node.type = \"mi\";\n } else {\n node = new mathMLTree.MathNode(\"mi\", inner);\n }\n } else {\n if (group.isCharacterBox) {\n node = inner[0];\n node.type = \"mo\";\n } else {\n node = new mathMLTree.MathNode(\"mo\", inner);\n } // Set spacing based on what is the most likely adjacent atom type.\n // See TeXbook p170.\n\n\n if (group.mclass === \"mbin\") {\n node.attributes.lspace = \"0.22em\"; // medium space\n\n node.attributes.rspace = \"0.22em\";\n } else if (group.mclass === \"mpunct\") {\n node.attributes.lspace = \"0em\";\n node.attributes.rspace = \"0.17em\"; // thinspace\n } else if (group.mclass === \"mopen\" || group.mclass === \"mclose\") {\n node.attributes.lspace = \"0em\";\n node.attributes.rspace = \"0em\";\n } else if (group.mclass === \"minner\") {\n node.attributes.lspace = \"0.0556em\"; // 1 mu is the most likely option\n\n node.attributes.width = \"+0.1111em\";\n } // MathML default space is 5/18 em, so needs no action.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo\n\n }\n\n return node;\n} // Math class commands except \\mathop\n\n\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\mathord\", \"\\\\mathbin\", \"\\\\mathrel\", \"\\\\mathopen\", \"\\\\mathclose\", \"\\\\mathpunct\", \"\\\\mathinner\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n\n handler(_ref, args) {\n let {\n parser,\n funcName\n } = _ref;\n const body = args[0];\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass: \"m\" + funcName.slice(5),\n // TODO(kevinb): don't prefix with 'm'\n body: ordargument(body),\n isCharacterBox: utils.isCharacterBox(body)\n };\n },\n\n htmlBuilder: mclass_htmlBuilder,\n mathmlBuilder: mclass_mathmlBuilder\n});\nconst binrelClass = arg => {\n // \\binrel@ spacing varies with (bin|rel|ord) of the atom in the argument.\n // (by rendering separately and with {}s before and after, and measuring\n // the change in spacing). We'll do roughly the same by detecting the\n // atom type directly.\n const atom = arg.type === \"ordgroup\" && arg.body.length ? arg.body[0] : arg;\n\n if (atom.type === \"atom\" && (atom.family === \"bin\" || atom.family === \"rel\")) {\n return \"m\" + atom.family;\n } else {\n return \"mord\";\n }\n}; // \\@binrel{x}{y} renders like y but as mbin/mrel/mord if x is mbin/mrel/mord.\n// This is equivalent to \\binrel@{x}\\binrel@@{y} in AMSTeX.\n\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\@binrel\"],\n props: {\n numArgs: 2\n },\n\n handler(_ref2, args) {\n let {\n parser\n } = _ref2;\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass: binrelClass(args[0]),\n body: ordargument(args[1]),\n isCharacterBox: utils.isCharacterBox(args[1])\n };\n }\n\n}); // Build a relation or stacked op by placing one symbol on top of another\n\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\stackrel\", \"\\\\overset\", \"\\\\underset\"],\n props: {\n numArgs: 2\n },\n\n handler(_ref3, args) {\n let {\n parser,\n funcName\n } = _ref3;\n const baseArg = args[1];\n const shiftedArg = args[0];\n let mclass;\n\n if (funcName !== \"\\\\stackrel\") {\n // LaTeX applies \\binrel spacing to \\overset and \\underset.\n mclass = binrelClass(baseArg);\n } else {\n mclass = \"mrel\"; // for \\stackrel\n }\n\n const baseOp = {\n type: \"op\",\n mode: baseArg.mode,\n limits: true,\n alwaysHandleSupSub: true,\n parentIsSupSub: false,\n symbol: false,\n suppressBaseShift: funcName !== \"\\\\stackrel\",\n body: ordargument(baseArg)\n };\n const supsub = {\n type: \"supsub\",\n mode: shiftedArg.mode,\n base: baseOp,\n sup: funcName === \"\\\\underset\" ? null : shiftedArg,\n sub: funcName === \"\\\\underset\" ? shiftedArg : null\n };\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass,\n body: [supsub],\n isCharacterBox: utils.isCharacterBox(supsub)\n };\n },\n\n htmlBuilder: mclass_htmlBuilder,\n mathmlBuilder: mclass_mathmlBuilder\n});\n;// CONCATENATED MODULE: ./src/functions/pmb.js\n\n\n\n\n\n\n// \\pmb is a simulation of bold font.\n// The version of \\pmb in ambsy.sty works by typesetting three copies\n// with small offsets. We use CSS text-shadow.\n// It's a hack. Not as good as a real bold font. Better than nothing.\ndefineFunction({\n type: \"pmb\",\n names: [\"\\\\pmb\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n\n handler(_ref, args) {\n let {\n parser\n } = _ref;\n return {\n type: \"pmb\",\n mode: parser.mode,\n mclass: binrelClass(args[0]),\n body: ordargument(args[0])\n };\n },\n\n htmlBuilder(group, options) {\n const elements = buildExpression(group.body, options, true);\n const node = buildCommon.makeSpan([group.mclass], elements, options);\n node.style.textShadow = \"0.02em 0.01em 0.04px\";\n return node;\n },\n\n mathmlBuilder(group, style) {\n const inner = buildMathML_buildExpression(group.body, style); // Wrap with an element.\n\n const node = new mathMLTree.MathNode(\"mstyle\", inner);\n node.setAttribute(\"style\", \"text-shadow: 0.02em 0.01em 0.04px\");\n return node;\n }\n\n});\n;// CONCATENATED MODULE: ./src/environments/cd.js\n\n\n\n\n\n\n\n\nconst cdArrowFunctionName = {\n \">\": \"\\\\\\\\cdrightarrow\",\n \"<\": \"\\\\\\\\cdleftarrow\",\n \"=\": \"\\\\\\\\cdlongequal\",\n \"A\": \"\\\\uparrow\",\n \"V\": \"\\\\downarrow\",\n \"|\": \"\\\\Vert\",\n \".\": \"no arrow\"\n};\n\nconst newCell = () => {\n // Create an empty cell, to be filled below with parse nodes.\n // The parseTree from this module must be constructed like the\n // one created by parseArray(), so an empty CD cell must\n // be a ParseNode<\"styling\">. And CD is always displaystyle.\n // So these values are fixed and flow can do implicit typing.\n return {\n type: \"styling\",\n body: [],\n mode: \"math\",\n style: \"display\"\n };\n};\n\nconst isStartOfArrow = node => {\n return node.type === \"textord\" && node.text === \"@\";\n};\n\nconst isLabelEnd = (node, endChar) => {\n return (node.type === \"mathord\" || node.type === \"atom\") && node.text === endChar;\n};\n\nfunction cdArrow(arrowChar, labels, parser) {\n // Return a parse tree of an arrow and its labels.\n // This acts in a way similar to a macro expansion.\n const funcName = cdArrowFunctionName[arrowChar];\n\n switch (funcName) {\n case \"\\\\\\\\cdrightarrow\":\n case \"\\\\\\\\cdleftarrow\":\n return parser.callFunction(funcName, [labels[0]], [labels[1]]);\n\n case \"\\\\uparrow\":\n case \"\\\\downarrow\":\n {\n const leftLabel = parser.callFunction(\"\\\\\\\\cdleft\", [labels[0]], []);\n const bareArrow = {\n type: \"atom\",\n text: funcName,\n mode: \"math\",\n family: \"rel\"\n };\n const sizedArrow = parser.callFunction(\"\\\\Big\", [bareArrow], []);\n const rightLabel = parser.callFunction(\"\\\\\\\\cdright\", [labels[1]], []);\n const arrowGroup = {\n type: \"ordgroup\",\n mode: \"math\",\n body: [leftLabel, sizedArrow, rightLabel]\n };\n return parser.callFunction(\"\\\\\\\\cdparent\", [arrowGroup], []);\n }\n\n case \"\\\\\\\\cdlongequal\":\n return parser.callFunction(\"\\\\\\\\cdlongequal\", [], []);\n\n case \"\\\\Vert\":\n {\n const arrow = {\n type: \"textord\",\n text: \"\\\\Vert\",\n mode: \"math\"\n };\n return parser.callFunction(\"\\\\Big\", [arrow], []);\n }\n\n default:\n return {\n type: \"textord\",\n text: \" \",\n mode: \"math\"\n };\n }\n}\n\nfunction parseCD(parser) {\n // Get the array's parse nodes with \\\\ temporarily mapped to \\cr.\n const parsedRows = [];\n parser.gullet.beginGroup();\n parser.gullet.macros.set(\"\\\\cr\", \"\\\\\\\\\\\\relax\");\n parser.gullet.beginGroup();\n\n while (true) {\n // eslint-disable-line no-constant-condition\n // Get the parse nodes for the next row.\n parsedRows.push(parser.parseExpression(false, \"\\\\\\\\\"));\n parser.gullet.endGroup();\n parser.gullet.beginGroup();\n const next = parser.fetch().text;\n\n if (next === \"&\" || next === \"\\\\\\\\\") {\n parser.consume();\n } else if (next === \"\\\\end\") {\n if (parsedRows[parsedRows.length - 1].length === 0) {\n parsedRows.pop(); // final row ended in \\\\\n }\n\n break;\n } else {\n throw new src_ParseError(\"Expected \\\\\\\\ or \\\\cr or \\\\end\", parser.nextToken);\n }\n }\n\n let row = [];\n const body = [row]; // Loop thru the parse nodes. Collect them into cells and arrows.\n\n for (let i = 0; i < parsedRows.length; i++) {\n // Start a new row.\n const rowNodes = parsedRows[i]; // Create the first cell.\n\n let cell = newCell();\n\n for (let j = 0; j < rowNodes.length; j++) {\n if (!isStartOfArrow(rowNodes[j])) {\n // If a parseNode is not an arrow, it goes into a cell.\n cell.body.push(rowNodes[j]);\n } else {\n // Parse node j is an \"@\", the start of an arrow.\n // Before starting on the arrow, push the cell into `row`.\n row.push(cell); // Now collect parseNodes into an arrow.\n // The character after \"@\" defines the arrow type.\n\n j += 1;\n const arrowChar = assertSymbolNodeType(rowNodes[j]).text; // Create two empty label nodes. We may or may not use them.\n\n const labels = new Array(2);\n labels[0] = {\n type: \"ordgroup\",\n mode: \"math\",\n body: []\n };\n labels[1] = {\n type: \"ordgroup\",\n mode: \"math\",\n body: []\n }; // Process the arrow.\n\n if (\"=|.\".indexOf(arrowChar) > -1) {// Three \"arrows\", ``@=`, `@|`, and `@.`, do not take labels.\n // Do nothing here.\n } else if (\"<>AV\".indexOf(arrowChar) > -1) {\n // Four arrows, `@>>>`, `@<<<`, `@AAA`, and `@VVV`, each take\n // two optional labels. E.g. the right-point arrow syntax is\n // really: @>{optional label}>{optional label}>\n // Collect parseNodes into labels.\n for (let labelNum = 0; labelNum < 2; labelNum++) {\n let inLabel = true;\n\n for (let k = j + 1; k < rowNodes.length; k++) {\n if (isLabelEnd(rowNodes[k], arrowChar)) {\n inLabel = false;\n j = k;\n break;\n }\n\n if (isStartOfArrow(rowNodes[k])) {\n throw new src_ParseError(\"Missing a \" + arrowChar + \" character to complete a CD arrow.\", rowNodes[k]);\n }\n\n labels[labelNum].body.push(rowNodes[k]);\n }\n\n if (inLabel) {\n // isLabelEnd never returned a true.\n throw new src_ParseError(\"Missing a \" + arrowChar + \" character to complete a CD arrow.\", rowNodes[j]);\n }\n }\n } else {\n throw new src_ParseError(\"Expected one of \\\"<>AV=|.\\\" after @\", rowNodes[j]);\n } // Now join the arrow to its labels.\n\n\n const arrow = cdArrow(arrowChar, labels, parser); // Wrap the arrow in ParseNode<\"styling\">.\n // This is done to match parseArray() behavior.\n\n const wrappedArrow = {\n type: \"styling\",\n body: [arrow],\n mode: \"math\",\n style: \"display\" // CD is always displaystyle.\n\n };\n row.push(wrappedArrow); // In CD's syntax, cells are implicit. That is, everything that\n // is not an arrow gets collected into a cell. So create an empty\n // cell now. It will collect upcoming parseNodes.\n\n cell = newCell();\n }\n }\n\n if (i % 2 === 0) {\n // Even-numbered rows consist of: cell, arrow, cell, arrow, ... cell\n // The last cell is not yet pushed into `row`, so:\n row.push(cell);\n } else {\n // Odd-numbered rows consist of: vert arrow, empty cell, ... vert arrow\n // Remove the empty cell that was placed at the beginning of `row`.\n row.shift();\n }\n\n row = [];\n body.push(row);\n } // End row group\n\n\n parser.gullet.endGroup(); // End array group defining \\\\\n\n parser.gullet.endGroup(); // define column separation.\n\n const cols = new Array(body[0].length).fill({\n type: \"align\",\n align: \"c\",\n pregap: 0.25,\n // CD package sets \\enskip between columns.\n postgap: 0.25 // So pre and post each get half an \\enskip, i.e. 0.25em.\n\n });\n return {\n type: \"array\",\n mode: \"math\",\n body,\n arraystretch: 1,\n addJot: true,\n rowGaps: [null],\n cols,\n colSeparationType: \"CD\",\n hLinesBeforeRow: new Array(body.length + 1).fill([])\n };\n} // The functions below are not available for general use.\n// They are here only for internal use by the {CD} environment in placing labels\n// next to vertical arrows.\n// We don't need any such functions for horizontal arrows because we can reuse\n// the functionality that already exists for extensible arrows.\n\ndefineFunction({\n type: \"cdlabel\",\n names: [\"\\\\\\\\cdleft\", \"\\\\\\\\cdright\"],\n props: {\n numArgs: 1\n },\n\n handler(_ref, args) {\n let {\n parser,\n funcName\n } = _ref;\n return {\n type: \"cdlabel\",\n mode: parser.mode,\n side: funcName.slice(4),\n label: args[0]\n };\n },\n\n htmlBuilder(group, options) {\n const newOptions = options.havingStyle(options.style.sup());\n const label = buildCommon.wrapFragment(buildGroup(group.label, newOptions, options), options);\n label.classes.push(\"cd-label-\" + group.side);\n label.style.bottom = makeEm(0.8 - label.depth); // Zero out label height & depth, so vertical align of arrow is set\n // by the arrow height, not by the label.\n\n label.height = 0;\n label.depth = 0;\n return label;\n },\n\n mathmlBuilder(group, options) {\n let label = new mathMLTree.MathNode(\"mrow\", [buildMathML_buildGroup(group.label, options)]);\n label = new mathMLTree.MathNode(\"mpadded\", [label]);\n label.setAttribute(\"width\", \"0\");\n\n if (group.side === \"left\") {\n label.setAttribute(\"lspace\", \"-1width\");\n } // We have to guess at vertical alignment. We know the arrow is 1.8em tall,\n // But we don't know the height or depth of the label.\n\n\n label.setAttribute(\"voffset\", \"0.7em\");\n label = new mathMLTree.MathNode(\"mstyle\", [label]);\n label.setAttribute(\"displaystyle\", \"false\");\n label.setAttribute(\"scriptlevel\", \"1\");\n return label;\n }\n\n});\ndefineFunction({\n type: \"cdlabelparent\",\n names: [\"\\\\\\\\cdparent\"],\n props: {\n numArgs: 1\n },\n\n handler(_ref2, args) {\n let {\n parser\n } = _ref2;\n return {\n type: \"cdlabelparent\",\n mode: parser.mode,\n fragment: args[0]\n };\n },\n\n htmlBuilder(group, options) {\n // Wrap the vertical arrow and its labels.\n // The parent gets position: relative. The child gets position: absolute.\n // So CSS can locate the label correctly.\n const parent = buildCommon.wrapFragment(buildGroup(group.fragment, options), options);\n parent.classes.push(\"cd-vert-arrow\");\n return parent;\n },\n\n mathmlBuilder(group, options) {\n return new mathMLTree.MathNode(\"mrow\", [buildMathML_buildGroup(group.fragment, options)]);\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/char.js\n\n\n // \\@char is an internal function that takes a grouped decimal argument like\n// {123} and converts into symbol with code 123. It is used by the *macro*\n// \\char defined in macros.js.\n\ndefineFunction({\n type: \"textord\",\n names: [\"\\\\@char\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n\n handler(_ref, args) {\n let {\n parser\n } = _ref;\n const arg = assertNodeType(args[0], \"ordgroup\");\n const group = arg.body;\n let number = \"\";\n\n for (let i = 0; i < group.length; i++) {\n const node = assertNodeType(group[i], \"textord\");\n number += node.text;\n }\n\n let code = parseInt(number);\n let text;\n\n if (isNaN(code)) {\n throw new src_ParseError(\"\\\\@char has non-numeric argument \" + number); // If we drop IE support, the following code could be replaced with\n // text = String.fromCodePoint(code)\n } else if (code < 0 || code >= 0x10ffff) {\n throw new src_ParseError(\"\\\\@char with invalid code point \" + number);\n } else if (code <= 0xffff) {\n text = String.fromCharCode(code);\n } else {\n // Astral code point; split into surrogate halves\n code -= 0x10000;\n text = String.fromCharCode((code >> 10) + 0xd800, (code & 0x3ff) + 0xdc00);\n }\n\n return {\n type: \"textord\",\n mode: parser.mode,\n text: text\n };\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/color.js\n\n\n\n\n\n\n\nconst color_htmlBuilder = (group, options) => {\n const elements = buildExpression(group.body, options.withColor(group.color), false); // \\color isn't supposed to affect the type of the elements it contains.\n // To accomplish this, we wrap the results in a fragment, so the inner\n // elements will be able to directly interact with their neighbors. For\n // example, `\\color{red}{2 +} 3` has the same spacing as `2 + 3`\n\n return buildCommon.makeFragment(elements);\n};\n\nconst color_mathmlBuilder = (group, options) => {\n const inner = buildMathML_buildExpression(group.body, options.withColor(group.color));\n const node = new mathMLTree.MathNode(\"mstyle\", inner);\n node.setAttribute(\"mathcolor\", group.color);\n return node;\n};\n\ndefineFunction({\n type: \"color\",\n names: [\"\\\\textcolor\"],\n props: {\n numArgs: 2,\n allowedInText: true,\n argTypes: [\"color\", \"original\"]\n },\n\n handler(_ref, args) {\n let {\n parser\n } = _ref;\n const color = assertNodeType(args[0], \"color-token\").color;\n const body = args[1];\n return {\n type: \"color\",\n mode: parser.mode,\n color,\n body: ordargument(body)\n };\n },\n\n htmlBuilder: color_htmlBuilder,\n mathmlBuilder: color_mathmlBuilder\n});\ndefineFunction({\n type: \"color\",\n names: [\"\\\\color\"],\n props: {\n numArgs: 1,\n allowedInText: true,\n argTypes: [\"color\"]\n },\n\n handler(_ref2, args) {\n let {\n parser,\n breakOnTokenText\n } = _ref2;\n const color = assertNodeType(args[0], \"color-token\").color; // Set macro \\current@color in current namespace to store the current\n // color, mimicking the behavior of color.sty.\n // This is currently used just to correctly color a \\right\n // that follows a \\color command.\n\n parser.gullet.macros.set(\"\\\\current@color\", color); // Parse out the implicit body that should be colored.\n\n const body = parser.parseExpression(true, breakOnTokenText);\n return {\n type: \"color\",\n mode: parser.mode,\n color,\n body\n };\n },\n\n htmlBuilder: color_htmlBuilder,\n mathmlBuilder: color_mathmlBuilder\n});\n;// CONCATENATED MODULE: ./src/functions/cr.js\n// Row breaks within tabular environments, and line breaks at top level\n\n\n\n\n // \\DeclareRobustCommand\\\\{...\\@xnewline}\n\ndefineFunction({\n type: \"cr\",\n names: [\"\\\\\\\\\"],\n props: {\n numArgs: 0,\n numOptionalArgs: 0,\n allowedInText: true\n },\n\n handler(_ref, args, optArgs) {\n let {\n parser\n } = _ref;\n const size = parser.gullet.future().text === \"[\" ? parser.parseSizeGroup(true) : null;\n const newLine = !parser.settings.displayMode || !parser.settings.useStrictBehavior(\"newLineInDisplayMode\", \"In LaTeX, \\\\\\\\ or \\\\newline \" + \"does nothing in display mode\");\n return {\n type: \"cr\",\n mode: parser.mode,\n newLine,\n size: size && assertNodeType(size, \"size\").value\n };\n },\n\n // The following builders are called only at the top level,\n // not within tabular/array environments.\n htmlBuilder(group, options) {\n const span = buildCommon.makeSpan([\"mspace\"], [], options);\n\n if (group.newLine) {\n span.classes.push(\"newline\");\n\n if (group.size) {\n span.style.marginTop = makeEm(calculateSize(group.size, options));\n }\n }\n\n return span;\n },\n\n mathmlBuilder(group, options) {\n const node = new mathMLTree.MathNode(\"mspace\");\n\n if (group.newLine) {\n node.setAttribute(\"linebreak\", \"newline\");\n\n if (group.size) {\n node.setAttribute(\"height\", makeEm(calculateSize(group.size, options)));\n }\n }\n\n return node;\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/def.js\n\n\n\nconst globalMap = {\n \"\\\\global\": \"\\\\global\",\n \"\\\\long\": \"\\\\\\\\globallong\",\n \"\\\\\\\\globallong\": \"\\\\\\\\globallong\",\n \"\\\\def\": \"\\\\gdef\",\n \"\\\\gdef\": \"\\\\gdef\",\n \"\\\\edef\": \"\\\\xdef\",\n \"\\\\xdef\": \"\\\\xdef\",\n \"\\\\let\": \"\\\\\\\\globallet\",\n \"\\\\futurelet\": \"\\\\\\\\globalfuture\"\n};\n\nconst checkControlSequence = tok => {\n const name = tok.text;\n\n if (/^(?:[\\\\{}$&#^_]|EOF)$/.test(name)) {\n throw new src_ParseError(\"Expected a control sequence\", tok);\n }\n\n return name;\n};\n\nconst getRHS = parser => {\n let tok = parser.gullet.popToken();\n\n if (tok.text === \"=\") {\n // consume optional equals\n tok = parser.gullet.popToken();\n\n if (tok.text === \" \") {\n // consume one optional space\n tok = parser.gullet.popToken();\n }\n }\n\n return tok;\n};\n\nconst letCommand = (parser, name, tok, global) => {\n let macro = parser.gullet.macros.get(tok.text);\n\n if (macro == null) {\n // don't expand it later even if a macro with the same name is defined\n // e.g., \\let\\foo=\\frac \\def\\frac{\\relax} \\frac12\n tok.noexpand = true;\n macro = {\n tokens: [tok],\n numArgs: 0,\n // reproduce the same behavior in expansion\n unexpandable: !parser.gullet.isExpandable(tok.text)\n };\n }\n\n parser.gullet.macros.set(name, macro, global);\n}; // -> |\n// -> |\\global\n// -> |\n// -> \\global|\\long|\\outer\n\n\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\global\", \"\\\\long\", \"\\\\\\\\globallong\" // can’t be entered directly\n ],\n props: {\n numArgs: 0,\n allowedInText: true\n },\n\n handler(_ref) {\n let {\n parser,\n funcName\n } = _ref;\n parser.consumeSpaces();\n const token = parser.fetch();\n\n if (globalMap[token.text]) {\n // KaTeX doesn't have \\par, so ignore \\long\n if (funcName === \"\\\\global\" || funcName === \"\\\\\\\\globallong\") {\n token.text = globalMap[token.text];\n }\n\n return assertNodeType(parser.parseFunction(), \"internal\");\n }\n\n throw new src_ParseError(\"Invalid token after macro prefix\", token);\n }\n\n}); // Basic support for macro definitions: \\def, \\gdef, \\edef, \\xdef\n// -> \n// -> \\def|\\gdef|\\edef|\\xdef\n// -> \n\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\def\", \"\\\\gdef\", \"\\\\edef\", \"\\\\xdef\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n\n handler(_ref2) {\n let {\n parser,\n funcName\n } = _ref2;\n let tok = parser.gullet.popToken();\n const name = tok.text;\n\n if (/^(?:[\\\\{}$&#^_]|EOF)$/.test(name)) {\n throw new src_ParseError(\"Expected a control sequence\", tok);\n }\n\n let numArgs = 0;\n let insert;\n const delimiters = [[]]; // contains no braces\n\n while (parser.gullet.future().text !== \"{\") {\n tok = parser.gullet.popToken();\n\n if (tok.text === \"#\") {\n // If the very last character of the is #, so that\n // this # is immediately followed by {, TeX will behave as if the {\n // had been inserted at the right end of both the parameter text\n // and the replacement text.\n if (parser.gullet.future().text === \"{\") {\n insert = parser.gullet.future();\n delimiters[numArgs].push(\"{\");\n break;\n } // A parameter, the first appearance of # must be followed by 1,\n // the next by 2, and so on; up to nine #’s are allowed\n\n\n tok = parser.gullet.popToken();\n\n if (!/^[1-9]$/.test(tok.text)) {\n throw new src_ParseError(\"Invalid argument number \\\"\" + tok.text + \"\\\"\");\n }\n\n if (parseInt(tok.text) !== numArgs + 1) {\n throw new src_ParseError(\"Argument number \\\"\" + tok.text + \"\\\" out of order\");\n }\n\n numArgs++;\n delimiters.push([]);\n } else if (tok.text === \"EOF\") {\n throw new src_ParseError(\"Expected a macro definition\");\n } else {\n delimiters[numArgs].push(tok.text);\n }\n } // replacement text, enclosed in '{' and '}' and properly nested\n\n\n let {\n tokens\n } = parser.gullet.consumeArg();\n\n if (insert) {\n tokens.unshift(insert);\n }\n\n if (funcName === \"\\\\edef\" || funcName === \"\\\\xdef\") {\n tokens = parser.gullet.expandTokens(tokens);\n tokens.reverse(); // to fit in with stack order\n } // Final arg is the expansion of the macro\n\n\n parser.gullet.macros.set(name, {\n tokens,\n numArgs,\n delimiters\n }, funcName === globalMap[funcName]);\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n\n}); // -> \n// -> \\futurelet\n// | \\let\n// -> |=\n\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\let\", \"\\\\\\\\globallet\" // can’t be entered directly\n ],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n\n handler(_ref3) {\n let {\n parser,\n funcName\n } = _ref3;\n const name = checkControlSequence(parser.gullet.popToken());\n parser.gullet.consumeSpaces();\n const tok = getRHS(parser);\n letCommand(parser, name, tok, funcName === \"\\\\\\\\globallet\");\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n\n}); // ref: https://www.tug.org/TUGboat/tb09-3/tb22bechtolsheim.pdf\n\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\futurelet\", \"\\\\\\\\globalfuture\" // can’t be entered directly\n ],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n\n handler(_ref4) {\n let {\n parser,\n funcName\n } = _ref4;\n const name = checkControlSequence(parser.gullet.popToken());\n const middle = parser.gullet.popToken();\n const tok = parser.gullet.popToken();\n letCommand(parser, name, tok, funcName === \"\\\\\\\\globalfuture\");\n parser.gullet.pushToken(tok);\n parser.gullet.pushToken(middle);\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n\n});\n;// CONCATENATED MODULE: ./src/delimiter.js\n/**\n * This file deals with creating delimiters of various sizes. The TeXbook\n * discusses these routines on page 441-442, in the \"Another subroutine sets box\n * x to a specified variable delimiter\" paragraph.\n *\n * There are three main routines here. `makeSmallDelim` makes a delimiter in the\n * normal font, but in either text, script, or scriptscript style.\n * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1,\n * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of\n * smaller pieces that are stacked on top of one another.\n *\n * The functions take a parameter `center`, which determines if the delimiter\n * should be centered around the axis.\n *\n * Then, there are three exposed functions. `sizedDelim` makes a delimiter in\n * one of the given sizes. This is used for things like `\\bigl`.\n * `customSizedDelim` makes a delimiter with a given total height+depth. It is\n * called in places like `\\sqrt`. `leftRightDelim` makes an appropriate\n * delimiter which surrounds an expression of a given height an depth. It is\n * used in `\\left` and `\\right`.\n */\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Get the metrics for a given symbol and font, after transformation (i.e.\n * after following replacement from symbols.js)\n */\nconst getMetrics = function (symbol, font, mode) {\n const replace = src_symbols.math[symbol] && src_symbols.math[symbol].replace;\n const metrics = getCharacterMetrics(replace || symbol, font, mode);\n\n if (!metrics) {\n throw new Error(\"Unsupported symbol \" + symbol + \" and font size \" + font + \".\");\n }\n\n return metrics;\n};\n/**\n * Puts a delimiter span in a given style, and adds appropriate height, depth,\n * and maxFontSizes.\n */\n\n\nconst styleWrap = function (delim, toStyle, options, classes) {\n const newOptions = options.havingBaseStyle(toStyle);\n const span = buildCommon.makeSpan(classes.concat(newOptions.sizingClasses(options)), [delim], options);\n const delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier;\n span.height *= delimSizeMultiplier;\n span.depth *= delimSizeMultiplier;\n span.maxFontSize = newOptions.sizeMultiplier;\n return span;\n};\n\nconst centerSpan = function (span, options, style) {\n const newOptions = options.havingBaseStyle(style);\n const shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight;\n span.classes.push(\"delimcenter\");\n span.style.top = makeEm(shift);\n span.height -= shift;\n span.depth += shift;\n};\n/**\n * Makes a small delimiter. This is a delimiter that comes in the Main-Regular\n * font, but is restyled to either be in textstyle, scriptstyle, or\n * scriptscriptstyle.\n */\n\n\nconst makeSmallDelim = function (delim, style, center, options, mode, classes) {\n const text = buildCommon.makeSymbol(delim, \"Main-Regular\", mode, options);\n const span = styleWrap(text, style, options, classes);\n\n if (center) {\n centerSpan(span, options, style);\n }\n\n return span;\n};\n/**\n * Builds a symbol in the given font size (note size is an integer)\n */\n\n\nconst mathrmSize = function (value, size, mode, options) {\n return buildCommon.makeSymbol(value, \"Size\" + size + \"-Regular\", mode, options);\n};\n/**\n * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2,\n * Size3, or Size4 fonts. It is always rendered in textstyle.\n */\n\n\nconst makeLargeDelim = function (delim, size, center, options, mode, classes) {\n const inner = mathrmSize(delim, size, mode, options);\n const span = styleWrap(buildCommon.makeSpan([\"delimsizing\", \"size\" + size], [inner], options), src_Style.TEXT, options, classes);\n\n if (center) {\n centerSpan(span, options, src_Style.TEXT);\n }\n\n return span;\n};\n/**\n * Make a span from a font glyph with the given offset and in the given font.\n * This is used in makeStackedDelim to make the stacking pieces for the delimiter.\n */\n\n\nconst makeGlyphSpan = function (symbol, font, mode) {\n let sizeClass; // Apply the correct CSS class to choose the right font.\n\n if (font === \"Size1-Regular\") {\n sizeClass = \"delim-size1\";\n } else\n /* if (font === \"Size4-Regular\") */\n {\n sizeClass = \"delim-size4\";\n }\n\n const corner = buildCommon.makeSpan([\"delimsizinginner\", sizeClass], [buildCommon.makeSpan([], [buildCommon.makeSymbol(symbol, font, mode)])]); // Since this will be passed into `makeVList` in the end, wrap the element\n // in the appropriate tag that VList uses.\n\n return {\n type: \"elem\",\n elem: corner\n };\n};\n\nconst makeInner = function (ch, height, options) {\n // Create a span with inline SVG for the inner part of a tall stacked delimiter.\n const width = fontMetricsData[\"Size4-Regular\"][ch.charCodeAt(0)] ? fontMetricsData[\"Size4-Regular\"][ch.charCodeAt(0)][4] : fontMetricsData[\"Size1-Regular\"][ch.charCodeAt(0)][4];\n const path = new PathNode(\"inner\", innerPath(ch, Math.round(1000 * height)));\n const svgNode = new SvgNode([path], {\n \"width\": makeEm(width),\n \"height\": makeEm(height),\n // Override CSS rule `.katex svg { width: 100% }`\n \"style\": \"width:\" + makeEm(width),\n \"viewBox\": \"0 0 \" + 1000 * width + \" \" + Math.round(1000 * height),\n \"preserveAspectRatio\": \"xMinYMin\"\n });\n const span = buildCommon.makeSvgSpan([], [svgNode], options);\n span.height = height;\n span.style.height = makeEm(height);\n span.style.width = makeEm(width);\n return {\n type: \"elem\",\n elem: span\n };\n}; // Helpers for makeStackedDelim\n\n\nconst lapInEms = 0.008;\nconst lap = {\n type: \"kern\",\n size: -1 * lapInEms\n};\nconst verts = [\"|\", \"\\\\lvert\", \"\\\\rvert\", \"\\\\vert\"];\nconst doubleVerts = [\"\\\\|\", \"\\\\lVert\", \"\\\\rVert\", \"\\\\Vert\"];\n/**\n * Make a stacked delimiter out of a given delimiter, with the total height at\n * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook.\n */\n\nconst makeStackedDelim = function (delim, heightTotal, center, options, mode, classes) {\n // There are four parts, the top, an optional middle, a repeated part, and a\n // bottom.\n let top;\n let middle;\n let repeat;\n let bottom;\n let svgLabel = \"\";\n let viewBoxWidth = 0;\n top = repeat = bottom = delim;\n middle = null; // Also keep track of what font the delimiters are in\n\n let font = \"Size1-Regular\"; // We set the parts and font based on the symbol. Note that we use\n // '\\u23d0' instead of '|' and '\\u2016' instead of '\\\\|' for the\n // repeats of the arrows\n\n if (delim === \"\\\\uparrow\") {\n repeat = bottom = \"\\u23d0\";\n } else if (delim === \"\\\\Uparrow\") {\n repeat = bottom = \"\\u2016\";\n } else if (delim === \"\\\\downarrow\") {\n top = repeat = \"\\u23d0\";\n } else if (delim === \"\\\\Downarrow\") {\n top = repeat = \"\\u2016\";\n } else if (delim === \"\\\\updownarrow\") {\n top = \"\\\\uparrow\";\n repeat = \"\\u23d0\";\n bottom = \"\\\\downarrow\";\n } else if (delim === \"\\\\Updownarrow\") {\n top = \"\\\\Uparrow\";\n repeat = \"\\u2016\";\n bottom = \"\\\\Downarrow\";\n } else if (utils.contains(verts, delim)) {\n repeat = \"\\u2223\";\n svgLabel = \"vert\";\n viewBoxWidth = 333;\n } else if (utils.contains(doubleVerts, delim)) {\n repeat = \"\\u2225\";\n svgLabel = \"doublevert\";\n viewBoxWidth = 556;\n } else if (delim === \"[\" || delim === \"\\\\lbrack\") {\n top = \"\\u23a1\";\n repeat = \"\\u23a2\";\n bottom = \"\\u23a3\";\n font = \"Size4-Regular\";\n svgLabel = \"lbrack\";\n viewBoxWidth = 667;\n } else if (delim === \"]\" || delim === \"\\\\rbrack\") {\n top = \"\\u23a4\";\n repeat = \"\\u23a5\";\n bottom = \"\\u23a6\";\n font = \"Size4-Regular\";\n svgLabel = \"rbrack\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\lfloor\" || delim === \"\\u230a\") {\n repeat = top = \"\\u23a2\";\n bottom = \"\\u23a3\";\n font = \"Size4-Regular\";\n svgLabel = \"lfloor\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\lceil\" || delim === \"\\u2308\") {\n top = \"\\u23a1\";\n repeat = bottom = \"\\u23a2\";\n font = \"Size4-Regular\";\n svgLabel = \"lceil\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\rfloor\" || delim === \"\\u230b\") {\n repeat = top = \"\\u23a5\";\n bottom = \"\\u23a6\";\n font = \"Size4-Regular\";\n svgLabel = \"rfloor\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\rceil\" || delim === \"\\u2309\") {\n top = \"\\u23a4\";\n repeat = bottom = \"\\u23a5\";\n font = \"Size4-Regular\";\n svgLabel = \"rceil\";\n viewBoxWidth = 667;\n } else if (delim === \"(\" || delim === \"\\\\lparen\") {\n top = \"\\u239b\";\n repeat = \"\\u239c\";\n bottom = \"\\u239d\";\n font = \"Size4-Regular\";\n svgLabel = \"lparen\";\n viewBoxWidth = 875;\n } else if (delim === \")\" || delim === \"\\\\rparen\") {\n top = \"\\u239e\";\n repeat = \"\\u239f\";\n bottom = \"\\u23a0\";\n font = \"Size4-Regular\";\n svgLabel = \"rparen\";\n viewBoxWidth = 875;\n } else if (delim === \"\\\\{\" || delim === \"\\\\lbrace\") {\n top = \"\\u23a7\";\n middle = \"\\u23a8\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\}\" || delim === \"\\\\rbrace\") {\n top = \"\\u23ab\";\n middle = \"\\u23ac\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lgroup\" || delim === \"\\u27ee\") {\n top = \"\\u23a7\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rgroup\" || delim === \"\\u27ef\") {\n top = \"\\u23ab\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lmoustache\" || delim === \"\\u23b0\") {\n top = \"\\u23a7\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rmoustache\" || delim === \"\\u23b1\") {\n top = \"\\u23ab\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } // Get the metrics of the four sections\n\n\n const topMetrics = getMetrics(top, font, mode);\n const topHeightTotal = topMetrics.height + topMetrics.depth;\n const repeatMetrics = getMetrics(repeat, font, mode);\n const repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth;\n const bottomMetrics = getMetrics(bottom, font, mode);\n const bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth;\n let middleHeightTotal = 0;\n let middleFactor = 1;\n\n if (middle !== null) {\n const middleMetrics = getMetrics(middle, font, mode);\n middleHeightTotal = middleMetrics.height + middleMetrics.depth;\n middleFactor = 2; // repeat symmetrically above and below middle\n } // Calculate the minimal height that the delimiter can have.\n // It is at least the size of the top, bottom, and optional middle combined.\n\n\n const minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal; // Compute the number of copies of the repeat symbol we will need\n\n const repeatCount = Math.max(0, Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal))); // Compute the total height of the delimiter including all the symbols\n\n const realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal; // The center of the delimiter is placed at the center of the axis. Note\n // that in this context, \"center\" means that the delimiter should be\n // centered around the axis in the current style, while normally it is\n // centered around the axis in textstyle.\n\n let axisHeight = options.fontMetrics().axisHeight;\n\n if (center) {\n axisHeight *= options.sizeMultiplier;\n } // Calculate the depth\n\n\n const depth = realHeightTotal / 2 - axisHeight; // Now, we start building the pieces that will go into the vlist\n // Keep a list of the pieces of the stacked delimiter\n\n const stack = [];\n\n if (svgLabel.length > 0) {\n // Instead of stacking glyphs, create a single SVG.\n // This evades browser problems with imprecise positioning of spans.\n const midHeight = realHeightTotal - topHeightTotal - bottomHeightTotal;\n const viewBoxHeight = Math.round(realHeightTotal * 1000);\n const pathStr = tallDelim(svgLabel, Math.round(midHeight * 1000));\n const path = new PathNode(svgLabel, pathStr);\n const width = (viewBoxWidth / 1000).toFixed(3) + \"em\";\n const height = (viewBoxHeight / 1000).toFixed(3) + \"em\";\n const svg = new SvgNode([path], {\n \"width\": width,\n \"height\": height,\n \"viewBox\": \"0 0 \" + viewBoxWidth + \" \" + viewBoxHeight\n });\n const wrapper = buildCommon.makeSvgSpan([], [svg], options);\n wrapper.height = viewBoxHeight / 1000;\n wrapper.style.width = width;\n wrapper.style.height = height;\n stack.push({\n type: \"elem\",\n elem: wrapper\n });\n } else {\n // Stack glyphs\n // Start by adding the bottom symbol\n stack.push(makeGlyphSpan(bottom, font, mode));\n stack.push(lap); // overlap\n\n if (middle === null) {\n // The middle section will be an SVG. Make it an extra 0.016em tall.\n // We'll overlap by 0.008em at top and bottom.\n const innerHeight = realHeightTotal - topHeightTotal - bottomHeightTotal + 2 * lapInEms;\n stack.push(makeInner(repeat, innerHeight, options));\n } else {\n // When there is a middle bit, we need the middle part and two repeated\n // sections\n const innerHeight = (realHeightTotal - topHeightTotal - bottomHeightTotal - middleHeightTotal) / 2 + 2 * lapInEms;\n stack.push(makeInner(repeat, innerHeight, options)); // Now insert the middle of the brace.\n\n stack.push(lap);\n stack.push(makeGlyphSpan(middle, font, mode));\n stack.push(lap);\n stack.push(makeInner(repeat, innerHeight, options));\n } // Add the top symbol\n\n\n stack.push(lap);\n stack.push(makeGlyphSpan(top, font, mode));\n } // Finally, build the vlist\n\n\n const newOptions = options.havingBaseStyle(src_Style.TEXT);\n const inner = buildCommon.makeVList({\n positionType: \"bottom\",\n positionData: depth,\n children: stack\n }, newOptions);\n return styleWrap(buildCommon.makeSpan([\"delimsizing\", \"mult\"], [inner], newOptions), src_Style.TEXT, options, classes);\n}; // All surds have 0.08em padding above the vinculum inside the SVG.\n// That keeps browser span height rounding error from pinching the line.\n\n\nconst vbPad = 80; // padding above the surd, measured inside the viewBox.\n\nconst emPad = 0.08; // padding, in ems, measured in the document.\n\nconst sqrtSvg = function (sqrtName, height, viewBoxHeight, extraVinculum, options) {\n const path = sqrtPath(sqrtName, extraVinculum, viewBoxHeight);\n const pathNode = new PathNode(sqrtName, path);\n const svg = new SvgNode([pathNode], {\n // Note: 1000:1 ratio of viewBox to document em width.\n \"width\": \"400em\",\n \"height\": makeEm(height),\n \"viewBox\": \"0 0 400000 \" + viewBoxHeight,\n \"preserveAspectRatio\": \"xMinYMin slice\"\n });\n return buildCommon.makeSvgSpan([\"hide-tail\"], [svg], options);\n};\n/**\n * Make a sqrt image of the given height,\n */\n\n\nconst makeSqrtImage = function (height, options) {\n // Define a newOptions that removes the effect of size changes such as \\Huge.\n // We don't pick different a height surd for \\Huge. For it, we scale up.\n const newOptions = options.havingBaseSizing(); // Pick the desired surd glyph from a sequence of surds.\n\n const delim = traverseSequence(\"\\\\surd\", height * newOptions.sizeMultiplier, stackLargeDelimiterSequence, newOptions);\n let sizeMultiplier = newOptions.sizeMultiplier; // default\n // The standard sqrt SVGs each have a 0.04em thick vinculum.\n // If Settings.minRuleThickness is larger than that, we add extraVinculum.\n\n const extraVinculum = Math.max(0, options.minRuleThickness - options.fontMetrics().sqrtRuleThickness); // Create a span containing an SVG image of a sqrt symbol.\n\n let span;\n let spanHeight = 0;\n let texHeight = 0;\n let viewBoxHeight = 0;\n let advanceWidth; // We create viewBoxes with 80 units of \"padding\" above each surd.\n // Then browser rounding error on the parent span height will not\n // encroach on the ink of the vinculum. But that padding is not\n // included in the TeX-like `height` used for calculation of\n // vertical alignment. So texHeight = span.height < span.style.height.\n\n if (delim.type === \"small\") {\n // Get an SVG that is derived from glyph U+221A in font KaTeX-Main.\n // 1000 unit normal glyph height.\n viewBoxHeight = 1000 + 1000 * extraVinculum + vbPad;\n\n if (height < 1.0) {\n sizeMultiplier = 1.0; // mimic a \\textfont radical\n } else if (height < 1.4) {\n sizeMultiplier = 0.7; // mimic a \\scriptfont radical\n }\n\n spanHeight = (1.0 + extraVinculum + emPad) / sizeMultiplier;\n texHeight = (1.00 + extraVinculum) / sizeMultiplier;\n span = sqrtSvg(\"sqrtMain\", spanHeight, viewBoxHeight, extraVinculum, options);\n span.style.minWidth = \"0.853em\";\n advanceWidth = 0.833 / sizeMultiplier; // from the font.\n } else if (delim.type === \"large\") {\n // These SVGs come from fonts: KaTeX_Size1, _Size2, etc.\n viewBoxHeight = (1000 + vbPad) * sizeToMaxHeight[delim.size];\n texHeight = (sizeToMaxHeight[delim.size] + extraVinculum) / sizeMultiplier;\n spanHeight = (sizeToMaxHeight[delim.size] + extraVinculum + emPad) / sizeMultiplier;\n span = sqrtSvg(\"sqrtSize\" + delim.size, spanHeight, viewBoxHeight, extraVinculum, options);\n span.style.minWidth = \"1.02em\";\n advanceWidth = 1.0 / sizeMultiplier; // 1.0 from the font.\n } else {\n // Tall sqrt. In TeX, this would be stacked using multiple glyphs.\n // We'll use a single SVG to accomplish the same thing.\n spanHeight = height + extraVinculum + emPad;\n texHeight = height + extraVinculum;\n viewBoxHeight = Math.floor(1000 * height + extraVinculum) + vbPad;\n span = sqrtSvg(\"sqrtTall\", spanHeight, viewBoxHeight, extraVinculum, options);\n span.style.minWidth = \"0.742em\";\n advanceWidth = 1.056;\n }\n\n span.height = texHeight;\n span.style.height = makeEm(spanHeight);\n return {\n span,\n advanceWidth,\n // Calculate the actual line width.\n // This actually should depend on the chosen font -- e.g. \\boldmath\n // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and\n // have thicker rules.\n ruleWidth: (options.fontMetrics().sqrtRuleThickness + extraVinculum) * sizeMultiplier\n };\n}; // There are three kinds of delimiters, delimiters that stack when they become\n// too large\n\n\nconst stackLargeDelimiters = [\"(\", \"\\\\lparen\", \")\", \"\\\\rparen\", \"[\", \"\\\\lbrack\", \"]\", \"\\\\rbrack\", \"\\\\{\", \"\\\\lbrace\", \"\\\\}\", \"\\\\rbrace\", \"\\\\lfloor\", \"\\\\rfloor\", \"\\u230a\", \"\\u230b\", \"\\\\lceil\", \"\\\\rceil\", \"\\u2308\", \"\\u2309\", \"\\\\surd\"]; // delimiters that always stack\n\nconst stackAlwaysDelimiters = [\"\\\\uparrow\", \"\\\\downarrow\", \"\\\\updownarrow\", \"\\\\Uparrow\", \"\\\\Downarrow\", \"\\\\Updownarrow\", \"|\", \"\\\\|\", \"\\\\vert\", \"\\\\Vert\", \"\\\\lvert\", \"\\\\rvert\", \"\\\\lVert\", \"\\\\rVert\", \"\\\\lgroup\", \"\\\\rgroup\", \"\\u27ee\", \"\\u27ef\", \"\\\\lmoustache\", \"\\\\rmoustache\", \"\\u23b0\", \"\\u23b1\"]; // and delimiters that never stack\n\nconst stackNeverDelimiters = [\"<\", \">\", \"\\\\langle\", \"\\\\rangle\", \"/\", \"\\\\backslash\", \"\\\\lt\", \"\\\\gt\"]; // Metrics of the different sizes. Found by looking at TeX's output of\n// $\\bigl| // \\Bigl| \\biggl| \\Biggl| \\showlists$\n// Used to create stacked delimiters of appropriate sizes in makeSizedDelim.\n\nconst sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0];\n/**\n * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4.\n */\n\nconst makeSizedDelim = function (delim, size, options, mode, classes) {\n // < and > turn into \\langle and \\rangle in delimiters\n if (delim === \"<\" || delim === \"\\\\lt\" || delim === \"\\u27e8\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\" || delim === \"\\u27e9\") {\n delim = \"\\\\rangle\";\n } // Sized delimiters are never centered.\n\n\n if (utils.contains(stackLargeDelimiters, delim) || utils.contains(stackNeverDelimiters, delim)) {\n return makeLargeDelim(delim, size, false, options, mode, classes);\n } else if (utils.contains(stackAlwaysDelimiters, delim)) {\n return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes);\n } else {\n throw new src_ParseError(\"Illegal delimiter: '\" + delim + \"'\");\n }\n};\n/**\n * There are three different sequences of delimiter sizes that the delimiters\n * follow depending on the kind of delimiter. This is used when creating custom\n * sized delimiters to decide whether to create a small, large, or stacked\n * delimiter.\n *\n * In real TeX, these sequences aren't explicitly defined, but are instead\n * defined inside the font metrics. Since there are only three sequences that\n * are possible for the delimiters that TeX defines, it is easier to just encode\n * them explicitly here.\n */\n\n\n// Delimiters that never stack try small delimiters and large delimiters only\nconst stackNeverDelimiterSequence = [{\n type: \"small\",\n style: src_Style.SCRIPTSCRIPT\n}, {\n type: \"small\",\n style: src_Style.SCRIPT\n}, {\n type: \"small\",\n style: src_Style.TEXT\n}, {\n type: \"large\",\n size: 1\n}, {\n type: \"large\",\n size: 2\n}, {\n type: \"large\",\n size: 3\n}, {\n type: \"large\",\n size: 4\n}]; // Delimiters that always stack try the small delimiters first, then stack\n\nconst stackAlwaysDelimiterSequence = [{\n type: \"small\",\n style: src_Style.SCRIPTSCRIPT\n}, {\n type: \"small\",\n style: src_Style.SCRIPT\n}, {\n type: \"small\",\n style: src_Style.TEXT\n}, {\n type: \"stack\"\n}]; // Delimiters that stack when large try the small and then large delimiters, and\n// stack afterwards\n\nconst stackLargeDelimiterSequence = [{\n type: \"small\",\n style: src_Style.SCRIPTSCRIPT\n}, {\n type: \"small\",\n style: src_Style.SCRIPT\n}, {\n type: \"small\",\n style: src_Style.TEXT\n}, {\n type: \"large\",\n size: 1\n}, {\n type: \"large\",\n size: 2\n}, {\n type: \"large\",\n size: 3\n}, {\n type: \"large\",\n size: 4\n}, {\n type: \"stack\"\n}];\n/**\n * Get the font used in a delimiter based on what kind of delimiter it is.\n * TODO(#963) Use more specific font family return type once that is introduced.\n */\n\nconst delimTypeToFont = function (type) {\n if (type.type === \"small\") {\n return \"Main-Regular\";\n } else if (type.type === \"large\") {\n return \"Size\" + type.size + \"-Regular\";\n } else if (type.type === \"stack\") {\n return \"Size4-Regular\";\n } else {\n throw new Error(\"Add support for delim type '\" + type.type + \"' here.\");\n }\n};\n/**\n * Traverse a sequence of types of delimiters to decide what kind of delimiter\n * should be used to create a delimiter of the given height+depth.\n */\n\n\nconst traverseSequence = function (delim, height, sequence, options) {\n // Here, we choose the index we should start at in the sequences. In smaller\n // sizes (which correspond to larger numbers in style.size) we start earlier\n // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts\n // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2\n const start = Math.min(2, 3 - options.style.size);\n\n for (let i = start; i < sequence.length; i++) {\n if (sequence[i].type === \"stack\") {\n // This is always the last delimiter, so we just break the loop now.\n break;\n }\n\n const metrics = getMetrics(delim, delimTypeToFont(sequence[i]), \"math\");\n let heightDepth = metrics.height + metrics.depth; // Small delimiters are scaled down versions of the same font, so we\n // account for the style change size.\n\n if (sequence[i].type === \"small\") {\n const newOptions = options.havingBaseStyle(sequence[i].style);\n heightDepth *= newOptions.sizeMultiplier;\n } // Check if the delimiter at this size works for the given height.\n\n\n if (heightDepth > height) {\n return sequence[i];\n }\n } // If we reached the end of the sequence, return the last sequence element.\n\n\n return sequence[sequence.length - 1];\n};\n/**\n * Make a delimiter of a given height+depth, with optional centering. Here, we\n * traverse the sequences, and create a delimiter that the sequence tells us to.\n */\n\n\nconst makeCustomSizedDelim = function (delim, height, center, options, mode, classes) {\n if (delim === \"<\" || delim === \"\\\\lt\" || delim === \"\\u27e8\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\" || delim === \"\\u27e9\") {\n delim = \"\\\\rangle\";\n } // Decide what sequence to use\n\n\n let sequence;\n\n if (utils.contains(stackNeverDelimiters, delim)) {\n sequence = stackNeverDelimiterSequence;\n } else if (utils.contains(stackLargeDelimiters, delim)) {\n sequence = stackLargeDelimiterSequence;\n } else {\n sequence = stackAlwaysDelimiterSequence;\n } // Look through the sequence\n\n\n const delimType = traverseSequence(delim, height, sequence, options); // Get the delimiter from font glyphs.\n // Depending on the sequence element we decided on, call the\n // appropriate function.\n\n if (delimType.type === \"small\") {\n return makeSmallDelim(delim, delimType.style, center, options, mode, classes);\n } else if (delimType.type === \"large\") {\n return makeLargeDelim(delim, delimType.size, center, options, mode, classes);\n } else\n /* if (delimType.type === \"stack\") */\n {\n return makeStackedDelim(delim, height, center, options, mode, classes);\n }\n};\n/**\n * Make a delimiter for use with `\\left` and `\\right`, given a height and depth\n * of an expression that the delimiters surround.\n */\n\n\nconst makeLeftRightDelim = function (delim, height, depth, options, mode, classes) {\n // We always center \\left/\\right delimiters, so the axis is always shifted\n const axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier; // Taken from TeX source, tex.web, function make_left_right\n\n const delimiterFactor = 901;\n const delimiterExtend = 5.0 / options.fontMetrics().ptPerEm;\n const maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight);\n const totalHeight = Math.max( // In real TeX, calculations are done using integral values which are\n // 65536 per pt, or 655360 per em. So, the division here truncates in\n // TeX but doesn't here, producing different results. If we wanted to\n // exactly match TeX's calculation, we could do\n // Math.floor(655360 * maxDistFromAxis / 500) *\n // delimiterFactor / 655360\n // (To see the difference, compare\n // x^{x^{\\left(\\rule{0.1em}{0.68em}\\right)}}\n // in TeX and KaTeX)\n maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend); // Finally, we defer to `makeCustomSizedDelim` with our calculated total\n // height\n\n return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes);\n};\n\n/* harmony default export */ var delimiter = ({\n sqrtImage: makeSqrtImage,\n sizedDelim: makeSizedDelim,\n sizeToMaxHeight: sizeToMaxHeight,\n customSizedDelim: makeCustomSizedDelim,\n leftRightDelim: makeLeftRightDelim\n});\n;// CONCATENATED MODULE: ./src/functions/delimsizing.js\n\n\n\n\n\n\n\n\n\n\n// Extra data needed for the delimiter handler down below\nconst delimiterSizes = {\n \"\\\\bigl\": {\n mclass: \"mopen\",\n size: 1\n },\n \"\\\\Bigl\": {\n mclass: \"mopen\",\n size: 2\n },\n \"\\\\biggl\": {\n mclass: \"mopen\",\n size: 3\n },\n \"\\\\Biggl\": {\n mclass: \"mopen\",\n size: 4\n },\n \"\\\\bigr\": {\n mclass: \"mclose\",\n size: 1\n },\n \"\\\\Bigr\": {\n mclass: \"mclose\",\n size: 2\n },\n \"\\\\biggr\": {\n mclass: \"mclose\",\n size: 3\n },\n \"\\\\Biggr\": {\n mclass: \"mclose\",\n size: 4\n },\n \"\\\\bigm\": {\n mclass: \"mrel\",\n size: 1\n },\n \"\\\\Bigm\": {\n mclass: \"mrel\",\n size: 2\n },\n \"\\\\biggm\": {\n mclass: \"mrel\",\n size: 3\n },\n \"\\\\Biggm\": {\n mclass: \"mrel\",\n size: 4\n },\n \"\\\\big\": {\n mclass: \"mord\",\n size: 1\n },\n \"\\\\Big\": {\n mclass: \"mord\",\n size: 2\n },\n \"\\\\bigg\": {\n mclass: \"mord\",\n size: 3\n },\n \"\\\\Bigg\": {\n mclass: \"mord\",\n size: 4\n }\n};\nconst delimiters = [\"(\", \"\\\\lparen\", \")\", \"\\\\rparen\", \"[\", \"\\\\lbrack\", \"]\", \"\\\\rbrack\", \"\\\\{\", \"\\\\lbrace\", \"\\\\}\", \"\\\\rbrace\", \"\\\\lfloor\", \"\\\\rfloor\", \"\\u230a\", \"\\u230b\", \"\\\\lceil\", \"\\\\rceil\", \"\\u2308\", \"\\u2309\", \"<\", \">\", \"\\\\langle\", \"\\u27e8\", \"\\\\rangle\", \"\\u27e9\", \"\\\\lt\", \"\\\\gt\", \"\\\\lvert\", \"\\\\rvert\", \"\\\\lVert\", \"\\\\rVert\", \"\\\\lgroup\", \"\\\\rgroup\", \"\\u27ee\", \"\\u27ef\", \"\\\\lmoustache\", \"\\\\rmoustache\", \"\\u23b0\", \"\\u23b1\", \"/\", \"\\\\backslash\", \"|\", \"\\\\vert\", \"\\\\|\", \"\\\\Vert\", \"\\\\uparrow\", \"\\\\Uparrow\", \"\\\\downarrow\", \"\\\\Downarrow\", \"\\\\updownarrow\", \"\\\\Updownarrow\", \".\"];\n\n// Delimiter functions\nfunction checkDelimiter(delim, context) {\n const symDelim = checkSymbolNodeType(delim);\n\n if (symDelim && utils.contains(delimiters, symDelim.text)) {\n return symDelim;\n } else if (symDelim) {\n throw new src_ParseError(\"Invalid delimiter '\" + symDelim.text + \"' after '\" + context.funcName + \"'\", delim);\n } else {\n throw new src_ParseError(\"Invalid delimiter type '\" + delim.type + \"'\", delim);\n }\n}\n\ndefineFunction({\n type: \"delimsizing\",\n names: [\"\\\\bigl\", \"\\\\Bigl\", \"\\\\biggl\", \"\\\\Biggl\", \"\\\\bigr\", \"\\\\Bigr\", \"\\\\biggr\", \"\\\\Biggr\", \"\\\\bigm\", \"\\\\Bigm\", \"\\\\biggm\", \"\\\\Biggm\", \"\\\\big\", \"\\\\Big\", \"\\\\bigg\", \"\\\\Bigg\"],\n props: {\n numArgs: 1,\n argTypes: [\"primitive\"]\n },\n handler: (context, args) => {\n const delim = checkDelimiter(args[0], context);\n return {\n type: \"delimsizing\",\n mode: context.parser.mode,\n size: delimiterSizes[context.funcName].size,\n mclass: delimiterSizes[context.funcName].mclass,\n delim: delim.text\n };\n },\n htmlBuilder: (group, options) => {\n if (group.delim === \".\") {\n // Empty delimiters still count as elements, even though they don't\n // show anything.\n return buildCommon.makeSpan([group.mclass]);\n } // Use delimiter.sizedDelim to generate the delimiter.\n\n\n return delimiter.sizedDelim(group.delim, group.size, options, group.mode, [group.mclass]);\n },\n mathmlBuilder: group => {\n const children = [];\n\n if (group.delim !== \".\") {\n children.push(makeText(group.delim, group.mode));\n }\n\n const node = new mathMLTree.MathNode(\"mo\", children);\n\n if (group.mclass === \"mopen\" || group.mclass === \"mclose\") {\n // Only some of the delimsizing functions act as fences, and they\n // return \"mopen\" or \"mclose\" mclass.\n node.setAttribute(\"fence\", \"true\");\n } else {\n // Explicitly disable fencing if it's not a fence, to override the\n // defaults.\n node.setAttribute(\"fence\", \"false\");\n }\n\n node.setAttribute(\"stretchy\", \"true\");\n const size = makeEm(delimiter.sizeToMaxHeight[group.size]);\n node.setAttribute(\"minsize\", size);\n node.setAttribute(\"maxsize\", size);\n return node;\n }\n});\n\nfunction assertParsed(group) {\n if (!group.body) {\n throw new Error(\"Bug: The leftright ParseNode wasn't fully parsed.\");\n }\n}\n\ndefineFunction({\n type: \"leftright-right\",\n names: [\"\\\\right\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (context, args) => {\n // \\left case below triggers parsing of \\right in\n // `const right = parser.parseFunction();`\n // uses this return value.\n const color = context.parser.gullet.macros.get(\"\\\\current@color\");\n\n if (color && typeof color !== \"string\") {\n throw new src_ParseError(\"\\\\current@color set to non-string in \\\\right\");\n }\n\n return {\n type: \"leftright-right\",\n mode: context.parser.mode,\n delim: checkDelimiter(args[0], context).text,\n color // undefined if not set via \\color\n\n };\n }\n});\ndefineFunction({\n type: \"leftright\",\n names: [\"\\\\left\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (context, args) => {\n const delim = checkDelimiter(args[0], context);\n const parser = context.parser; // Parse out the implicit body\n\n ++parser.leftrightDepth; // parseExpression stops before '\\\\right'\n\n const body = parser.parseExpression(false);\n --parser.leftrightDepth; // Check the next token\n\n parser.expect(\"\\\\right\", false);\n const right = assertNodeType(parser.parseFunction(), \"leftright-right\");\n return {\n type: \"leftright\",\n mode: parser.mode,\n body,\n left: delim.text,\n right: right.delim,\n rightColor: right.color\n };\n },\n htmlBuilder: (group, options) => {\n assertParsed(group); // Build the inner expression\n\n const inner = buildExpression(group.body, options, true, [\"mopen\", \"mclose\"]);\n let innerHeight = 0;\n let innerDepth = 0;\n let hadMiddle = false; // Calculate its height and depth\n\n for (let i = 0; i < inner.length; i++) {\n // Property `isMiddle` not defined on `span`. See comment in\n // \"middle\"'s htmlBuilder.\n // $FlowFixMe\n if (inner[i].isMiddle) {\n hadMiddle = true;\n } else {\n innerHeight = Math.max(inner[i].height, innerHeight);\n innerDepth = Math.max(inner[i].depth, innerDepth);\n }\n } // The size of delimiters is the same, regardless of what style we are\n // in. Thus, to correctly calculate the size of delimiter we need around\n // a group, we scale down the inner size based on the size.\n\n\n innerHeight *= options.sizeMultiplier;\n innerDepth *= options.sizeMultiplier;\n let leftDelim;\n\n if (group.left === \".\") {\n // Empty delimiters in \\left and \\right make null delimiter spaces.\n leftDelim = makeNullDelimiter(options, [\"mopen\"]);\n } else {\n // Otherwise, use leftRightDelim to generate the correct sized\n // delimiter.\n leftDelim = delimiter.leftRightDelim(group.left, innerHeight, innerDepth, options, group.mode, [\"mopen\"]);\n } // Add it to the beginning of the expression\n\n\n inner.unshift(leftDelim); // Handle middle delimiters\n\n if (hadMiddle) {\n for (let i = 1; i < inner.length; i++) {\n const middleDelim = inner[i]; // Property `isMiddle` not defined on `span`. See comment in\n // \"middle\"'s htmlBuilder.\n // $FlowFixMe\n\n const isMiddle = middleDelim.isMiddle;\n\n if (isMiddle) {\n // Apply the options that were active when \\middle was called\n inner[i] = delimiter.leftRightDelim(isMiddle.delim, innerHeight, innerDepth, isMiddle.options, group.mode, []);\n }\n }\n }\n\n let rightDelim; // Same for the right delimiter, but using color specified by \\color\n\n if (group.right === \".\") {\n rightDelim = makeNullDelimiter(options, [\"mclose\"]);\n } else {\n const colorOptions = group.rightColor ? options.withColor(group.rightColor) : options;\n rightDelim = delimiter.leftRightDelim(group.right, innerHeight, innerDepth, colorOptions, group.mode, [\"mclose\"]);\n } // Add it to the end of the expression.\n\n\n inner.push(rightDelim);\n return buildCommon.makeSpan([\"minner\"], inner, options);\n },\n mathmlBuilder: (group, options) => {\n assertParsed(group);\n const inner = buildMathML_buildExpression(group.body, options);\n\n if (group.left !== \".\") {\n const leftNode = new mathMLTree.MathNode(\"mo\", [makeText(group.left, group.mode)]);\n leftNode.setAttribute(\"fence\", \"true\");\n inner.unshift(leftNode);\n }\n\n if (group.right !== \".\") {\n const rightNode = new mathMLTree.MathNode(\"mo\", [makeText(group.right, group.mode)]);\n rightNode.setAttribute(\"fence\", \"true\");\n\n if (group.rightColor) {\n rightNode.setAttribute(\"mathcolor\", group.rightColor);\n }\n\n inner.push(rightNode);\n }\n\n return makeRow(inner);\n }\n});\ndefineFunction({\n type: \"middle\",\n names: [\"\\\\middle\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (context, args) => {\n const delim = checkDelimiter(args[0], context);\n\n if (!context.parser.leftrightDepth) {\n throw new src_ParseError(\"\\\\middle without preceding \\\\left\", delim);\n }\n\n return {\n type: \"middle\",\n mode: context.parser.mode,\n delim: delim.text\n };\n },\n htmlBuilder: (group, options) => {\n let middleDelim;\n\n if (group.delim === \".\") {\n middleDelim = makeNullDelimiter(options, []);\n } else {\n middleDelim = delimiter.sizedDelim(group.delim, 1, options, group.mode, []);\n const isMiddle = {\n delim: group.delim,\n options\n }; // Property `isMiddle` not defined on `span`. It is only used in\n // this file above.\n // TODO: Fix this violation of the `span` type and possibly rename\n // things since `isMiddle` sounds like a boolean, but is a struct.\n // $FlowFixMe\n\n middleDelim.isMiddle = isMiddle;\n }\n\n return middleDelim;\n },\n mathmlBuilder: (group, options) => {\n // A Firefox \\middle will stretch a character vertically only if it\n // is in the fence part of the operator dictionary at:\n // https://www.w3.org/TR/MathML3/appendixc.html.\n // So we need to avoid U+2223 and use plain \"|\" instead.\n const textNode = group.delim === \"\\\\vert\" || group.delim === \"|\" ? makeText(\"|\", \"text\") : makeText(group.delim, group.mode);\n const middleNode = new mathMLTree.MathNode(\"mo\", [textNode]);\n middleNode.setAttribute(\"fence\", \"true\"); // MathML gives 5/18em spacing to each element.\n // \\middle should get delimiter spacing instead.\n\n middleNode.setAttribute(\"lspace\", \"0.05em\");\n middleNode.setAttribute(\"rspace\", \"0.05em\");\n return middleNode;\n }\n});\n;// CONCATENATED MODULE: ./src/functions/enclose.js\n\n\n\n\n\n\n\n\n\n\n\n\nconst enclose_htmlBuilder = (group, options) => {\n // \\cancel, \\bcancel, \\xcancel, \\sout, \\fbox, \\colorbox, \\fcolorbox, \\phase\n // Some groups can return document fragments. Handle those by wrapping\n // them in a span.\n const inner = buildCommon.wrapFragment(buildGroup(group.body, options), options);\n const label = group.label.slice(1);\n let scale = options.sizeMultiplier;\n let img;\n let imgShift = 0; // In the LaTeX cancel package, line geometry is slightly different\n // depending on whether the subject is wider than it is tall, or vice versa.\n // We don't know the width of a group, so as a proxy, we test if\n // the subject is a single character. This captures most of the\n // subjects that should get the \"tall\" treatment.\n\n const isSingleChar = utils.isCharacterBox(group.body);\n\n if (label === \"sout\") {\n img = buildCommon.makeSpan([\"stretchy\", \"sout\"]);\n img.height = options.fontMetrics().defaultRuleThickness / scale;\n imgShift = -0.5 * options.fontMetrics().xHeight;\n } else if (label === \"phase\") {\n // Set a couple of dimensions from the steinmetz package.\n const lineWeight = calculateSize({\n number: 0.6,\n unit: \"pt\"\n }, options);\n const clearance = calculateSize({\n number: 0.35,\n unit: \"ex\"\n }, options); // Prevent size changes like \\Huge from affecting line thickness\n\n const newOptions = options.havingBaseSizing();\n scale = scale / newOptions.sizeMultiplier;\n const angleHeight = inner.height + inner.depth + lineWeight + clearance; // Reserve a left pad for the angle.\n\n inner.style.paddingLeft = makeEm(angleHeight / 2 + lineWeight); // Create an SVG\n\n const viewBoxHeight = Math.floor(1000 * angleHeight * scale);\n const path = phasePath(viewBoxHeight);\n const svgNode = new SvgNode([new PathNode(\"phase\", path)], {\n \"width\": \"400em\",\n \"height\": makeEm(viewBoxHeight / 1000),\n \"viewBox\": \"0 0 400000 \" + viewBoxHeight,\n \"preserveAspectRatio\": \"xMinYMin slice\"\n }); // Wrap it in a span with overflow: hidden.\n\n img = buildCommon.makeSvgSpan([\"hide-tail\"], [svgNode], options);\n img.style.height = makeEm(angleHeight);\n imgShift = inner.depth + lineWeight + clearance;\n } else {\n // Add horizontal padding\n if (/cancel/.test(label)) {\n if (!isSingleChar) {\n inner.classes.push(\"cancel-pad\");\n }\n } else if (label === \"angl\") {\n inner.classes.push(\"anglpad\");\n } else {\n inner.classes.push(\"boxpad\");\n } // Add vertical padding\n\n\n let topPad = 0;\n let bottomPad = 0;\n let ruleThickness = 0; // ref: cancel package: \\advance\\totalheight2\\p@ % \"+2\"\n\n if (/box/.test(label)) {\n ruleThickness = Math.max(options.fontMetrics().fboxrule, // default\n options.minRuleThickness // User override.\n );\n topPad = options.fontMetrics().fboxsep + (label === \"colorbox\" ? 0 : ruleThickness);\n bottomPad = topPad;\n } else if (label === \"angl\") {\n ruleThickness = Math.max(options.fontMetrics().defaultRuleThickness, options.minRuleThickness);\n topPad = 4 * ruleThickness; // gap = 3 × line, plus the line itself.\n\n bottomPad = Math.max(0, 0.25 - inner.depth);\n } else {\n topPad = isSingleChar ? 0.2 : 0;\n bottomPad = topPad;\n }\n\n img = stretchy.encloseSpan(inner, label, topPad, bottomPad, options);\n\n if (/fbox|boxed|fcolorbox/.test(label)) {\n img.style.borderStyle = \"solid\";\n img.style.borderWidth = makeEm(ruleThickness);\n } else if (label === \"angl\" && ruleThickness !== 0.049) {\n img.style.borderTopWidth = makeEm(ruleThickness);\n img.style.borderRightWidth = makeEm(ruleThickness);\n }\n\n imgShift = inner.depth + bottomPad;\n\n if (group.backgroundColor) {\n img.style.backgroundColor = group.backgroundColor;\n\n if (group.borderColor) {\n img.style.borderColor = group.borderColor;\n }\n }\n }\n\n let vlist;\n\n if (group.backgroundColor) {\n vlist = buildCommon.makeVList({\n positionType: \"individualShift\",\n children: [// Put the color background behind inner;\n {\n type: \"elem\",\n elem: img,\n shift: imgShift\n }, {\n type: \"elem\",\n elem: inner,\n shift: 0\n }]\n }, options);\n } else {\n const classes = /cancel|phase/.test(label) ? [\"svg-align\"] : [];\n vlist = buildCommon.makeVList({\n positionType: \"individualShift\",\n children: [// Write the \\cancel stroke on top of inner.\n {\n type: \"elem\",\n elem: inner,\n shift: 0\n }, {\n type: \"elem\",\n elem: img,\n shift: imgShift,\n wrapperClasses: classes\n }]\n }, options);\n }\n\n if (/cancel/.test(label)) {\n // The cancel package documentation says that cancel lines add their height\n // to the expression, but tests show that isn't how it actually works.\n vlist.height = inner.height;\n vlist.depth = inner.depth;\n }\n\n if (/cancel/.test(label) && !isSingleChar) {\n // cancel does not create horiz space for its line extension.\n return buildCommon.makeSpan([\"mord\", \"cancel-lap\"], [vlist], options);\n } else {\n return buildCommon.makeSpan([\"mord\"], [vlist], options);\n }\n};\n\nconst enclose_mathmlBuilder = (group, options) => {\n let fboxsep = 0;\n const node = new mathMLTree.MathNode(group.label.indexOf(\"colorbox\") > -1 ? \"mpadded\" : \"menclose\", [buildMathML_buildGroup(group.body, options)]);\n\n switch (group.label) {\n case \"\\\\cancel\":\n node.setAttribute(\"notation\", \"updiagonalstrike\");\n break;\n\n case \"\\\\bcancel\":\n node.setAttribute(\"notation\", \"downdiagonalstrike\");\n break;\n\n case \"\\\\phase\":\n node.setAttribute(\"notation\", \"phasorangle\");\n break;\n\n case \"\\\\sout\":\n node.setAttribute(\"notation\", \"horizontalstrike\");\n break;\n\n case \"\\\\fbox\":\n node.setAttribute(\"notation\", \"box\");\n break;\n\n case \"\\\\angl\":\n node.setAttribute(\"notation\", \"actuarial\");\n break;\n\n case \"\\\\fcolorbox\":\n case \"\\\\colorbox\":\n // doesn't have a good notation option. So use \n // instead. Set some attributes that come included with .\n fboxsep = options.fontMetrics().fboxsep * options.fontMetrics().ptPerEm;\n node.setAttribute(\"width\", \"+\" + 2 * fboxsep + \"pt\");\n node.setAttribute(\"height\", \"+\" + 2 * fboxsep + \"pt\");\n node.setAttribute(\"lspace\", fboxsep + \"pt\"); //\n\n node.setAttribute(\"voffset\", fboxsep + \"pt\");\n\n if (group.label === \"\\\\fcolorbox\") {\n const thk = Math.max(options.fontMetrics().fboxrule, // default\n options.minRuleThickness // user override\n );\n node.setAttribute(\"style\", \"border: \" + thk + \"em solid \" + String(group.borderColor));\n }\n\n break;\n\n case \"\\\\xcancel\":\n node.setAttribute(\"notation\", \"updiagonalstrike downdiagonalstrike\");\n break;\n }\n\n if (group.backgroundColor) {\n node.setAttribute(\"mathbackground\", group.backgroundColor);\n }\n\n return node;\n};\n\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\colorbox\"],\n props: {\n numArgs: 2,\n allowedInText: true,\n argTypes: [\"color\", \"text\"]\n },\n\n handler(_ref, args, optArgs) {\n let {\n parser,\n funcName\n } = _ref;\n const color = assertNodeType(args[0], \"color-token\").color;\n const body = args[1];\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: funcName,\n backgroundColor: color,\n body\n };\n },\n\n htmlBuilder: enclose_htmlBuilder,\n mathmlBuilder: enclose_mathmlBuilder\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\fcolorbox\"],\n props: {\n numArgs: 3,\n allowedInText: true,\n argTypes: [\"color\", \"color\", \"text\"]\n },\n\n handler(_ref2, args, optArgs) {\n let {\n parser,\n funcName\n } = _ref2;\n const borderColor = assertNodeType(args[0], \"color-token\").color;\n const backgroundColor = assertNodeType(args[1], \"color-token\").color;\n const body = args[2];\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: funcName,\n backgroundColor,\n borderColor,\n body\n };\n },\n\n htmlBuilder: enclose_htmlBuilder,\n mathmlBuilder: enclose_mathmlBuilder\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\fbox\"],\n props: {\n numArgs: 1,\n argTypes: [\"hbox\"],\n allowedInText: true\n },\n\n handler(_ref3, args) {\n let {\n parser\n } = _ref3;\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: \"\\\\fbox\",\n body: args[0]\n };\n }\n\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\cancel\", \"\\\\bcancel\", \"\\\\xcancel\", \"\\\\sout\", \"\\\\phase\"],\n props: {\n numArgs: 1\n },\n\n handler(_ref4, args) {\n let {\n parser,\n funcName\n } = _ref4;\n const body = args[0];\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: funcName,\n body\n };\n },\n\n htmlBuilder: enclose_htmlBuilder,\n mathmlBuilder: enclose_mathmlBuilder\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\angl\"],\n props: {\n numArgs: 1,\n argTypes: [\"hbox\"],\n allowedInText: false\n },\n\n handler(_ref5, args) {\n let {\n parser\n } = _ref5;\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: \"\\\\angl\",\n body: args[0]\n };\n }\n\n});\n;// CONCATENATED MODULE: ./src/defineEnvironment.js\n\n\n/**\n * All registered environments.\n * `environments.js` exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary via `environments.js`.\n */\nconst _environments = {};\nfunction defineEnvironment(_ref) {\n let {\n type,\n names,\n props,\n handler,\n htmlBuilder,\n mathmlBuilder\n } = _ref;\n // Set default values of environments.\n const data = {\n type,\n numArgs: props.numArgs || 0,\n allowedInText: false,\n numOptionalArgs: 0,\n handler\n };\n\n for (let i = 0; i < names.length; ++i) {\n // TODO: The value type of _environments should be a type union of all\n // possible `EnvSpec<>` possibilities instead of `EnvSpec<*>`, which is\n // an existential type.\n _environments[names[i]] = data;\n }\n\n if (htmlBuilder) {\n _htmlGroupBuilders[type] = htmlBuilder;\n }\n\n if (mathmlBuilder) {\n _mathmlGroupBuilders[type] = mathmlBuilder;\n }\n}\n;// CONCATENATED MODULE: ./src/defineMacro.js\n\n\n/**\n * All registered global/built-in macros.\n * `macros.js` exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary via `macros.js`.\n */\nconst _macros = {}; // This function might one day accept an additional argument and do more things.\n\nfunction defineMacro(name, body) {\n _macros[name] = body;\n}\n;// CONCATENATED MODULE: ./src/SourceLocation.js\n/**\n * Lexing or parsing positional information for error reporting.\n * This object is immutable.\n */\nclass SourceLocation {\n // The + prefix indicates that these fields aren't writeable\n // Lexer holding the input string.\n // Start offset, zero-based inclusive.\n // End offset, zero-based exclusive.\n constructor(lexer, start, end) {\n this.lexer = void 0;\n this.start = void 0;\n this.end = void 0;\n this.lexer = lexer;\n this.start = start;\n this.end = end;\n }\n /**\n * Merges two `SourceLocation`s from location providers, given they are\n * provided in order of appearance.\n * - Returns the first one's location if only the first is provided.\n * - Returns a merged range of the first and the last if both are provided\n * and their lexers match.\n * - Otherwise, returns null.\n */\n\n\n static range(first, second) {\n if (!second) {\n return first && first.loc;\n } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) {\n return null;\n } else {\n return new SourceLocation(first.loc.lexer, first.loc.start, second.loc.end);\n }\n }\n\n}\n;// CONCATENATED MODULE: ./src/Token.js\n\n/**\n * Interface required to break circular dependency between Token, Lexer, and\n * ParseError.\n */\n\n/**\n * The resulting token returned from `lex`.\n *\n * It consists of the token text plus some position information.\n * The position information is essentially a range in an input string,\n * but instead of referencing the bare input string, we refer to the lexer.\n * That way it is possible to attach extra metadata to the input string,\n * like for example a file name or similar.\n *\n * The position information is optional, so it is OK to construct synthetic\n * tokens if appropriate. Not providing available position information may\n * lead to degraded error reporting, though.\n */\nclass Token {\n // don't expand the token\n // used in \\noexpand\n constructor(text, // the text of this token\n loc) {\n this.text = void 0;\n this.loc = void 0;\n this.noexpand = void 0;\n this.treatAsRelax = void 0;\n this.text = text;\n this.loc = loc;\n }\n /**\n * Given a pair of tokens (this and endToken), compute a `Token` encompassing\n * the whole input range enclosed by these two.\n */\n\n\n range(endToken, // last token of the range, inclusive\n text // the text of the newly constructed token\n ) {\n return new Token(text, SourceLocation.range(this, endToken));\n }\n\n}\n;// CONCATENATED MODULE: ./src/environments/array.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Helper functions\nfunction getHLines(parser) {\n // Return an array. The array length = number of hlines.\n // Each element in the array tells if the line is dashed.\n const hlineInfo = [];\n parser.consumeSpaces();\n let nxt = parser.fetch().text;\n\n if (nxt === \"\\\\relax\") {\n // \\relax is an artifact of the \\cr macro below\n parser.consume();\n parser.consumeSpaces();\n nxt = parser.fetch().text;\n }\n\n while (nxt === \"\\\\hline\" || nxt === \"\\\\hdashline\") {\n parser.consume();\n hlineInfo.push(nxt === \"\\\\hdashline\");\n parser.consumeSpaces();\n nxt = parser.fetch().text;\n }\n\n return hlineInfo;\n}\n\nconst validateAmsEnvironmentContext = context => {\n const settings = context.parser.settings;\n\n if (!settings.displayMode) {\n throw new src_ParseError(\"{\" + context.envName + \"} can be used only in\" + \" display mode.\");\n }\n}; // autoTag (an argument to parseArray) can be one of three values:\n// * undefined: Regular (not-top-level) array; no tags on each row\n// * true: Automatic equation numbering, overridable by \\tag\n// * false: Tags allowed on each row, but no automatic numbering\n// This function *doesn't* work with the \"split\" environment name.\n\n\nfunction getAutoTag(name) {\n if (name.indexOf(\"ed\") === -1) {\n return name.indexOf(\"*\") === -1;\n } // return undefined;\n\n}\n/**\n * Parse the body of the environment, with rows delimited by \\\\ and\n * columns delimited by &, and create a nested list in row-major order\n * with one group per cell. If given an optional argument style\n * (\"text\", \"display\", etc.), then each cell is cast into that style.\n */\n\n\nfunction parseArray(parser, _ref, style) {\n let {\n hskipBeforeAndAfter,\n addJot,\n cols,\n arraystretch,\n colSeparationType,\n autoTag,\n singleRow,\n emptySingleRow,\n maxNumCols,\n leqno\n } = _ref;\n parser.gullet.beginGroup();\n\n if (!singleRow) {\n // \\cr is equivalent to \\\\ without the optional size argument (see below)\n // TODO: provide helpful error when \\cr is used outside array environment\n parser.gullet.macros.set(\"\\\\cr\", \"\\\\\\\\\\\\relax\");\n } // Get current arraystretch if it's not set by the environment\n\n\n if (!arraystretch) {\n const stretch = parser.gullet.expandMacroAsText(\"\\\\arraystretch\");\n\n if (stretch == null) {\n // Default \\arraystretch from lttab.dtx\n arraystretch = 1;\n } else {\n arraystretch = parseFloat(stretch);\n\n if (!arraystretch || arraystretch < 0) {\n throw new src_ParseError(\"Invalid \\\\arraystretch: \" + stretch);\n }\n }\n } // Start group for first cell\n\n\n parser.gullet.beginGroup();\n let row = [];\n const body = [row];\n const rowGaps = [];\n const hLinesBeforeRow = [];\n const tags = autoTag != null ? [] : undefined; // amsmath uses \\global\\@eqnswtrue and \\global\\@eqnswfalse to represent\n // whether this row should have an equation number. Simulate this with\n // a \\@eqnsw macro set to 1 or 0.\n\n function beginRow() {\n if (autoTag) {\n parser.gullet.macros.set(\"\\\\@eqnsw\", \"1\", true);\n }\n }\n\n function endRow() {\n if (tags) {\n if (parser.gullet.macros.get(\"\\\\df@tag\")) {\n tags.push(parser.subparse([new Token(\"\\\\df@tag\")]));\n parser.gullet.macros.set(\"\\\\df@tag\", undefined, true);\n } else {\n tags.push(Boolean(autoTag) && parser.gullet.macros.get(\"\\\\@eqnsw\") === \"1\");\n }\n }\n }\n\n beginRow(); // Test for \\hline at the top of the array.\n\n hLinesBeforeRow.push(getHLines(parser));\n\n while (true) {\n // eslint-disable-line no-constant-condition\n // Parse each cell in its own group (namespace)\n let cell = parser.parseExpression(false, singleRow ? \"\\\\end\" : \"\\\\\\\\\");\n parser.gullet.endGroup();\n parser.gullet.beginGroup();\n cell = {\n type: \"ordgroup\",\n mode: parser.mode,\n body: cell\n };\n\n if (style) {\n cell = {\n type: \"styling\",\n mode: parser.mode,\n style,\n body: [cell]\n };\n }\n\n row.push(cell);\n const next = parser.fetch().text;\n\n if (next === \"&\") {\n if (maxNumCols && row.length === maxNumCols) {\n if (singleRow || colSeparationType) {\n // {equation} or {split}\n throw new src_ParseError(\"Too many tab characters: &\", parser.nextToken);\n } else {\n // {array} environment\n parser.settings.reportNonstrict(\"textEnv\", \"Too few columns \" + \"specified in the {array} column argument.\");\n }\n }\n\n parser.consume();\n } else if (next === \"\\\\end\") {\n endRow(); // Arrays terminate newlines with `\\crcr` which consumes a `\\cr` if\n // the last line is empty. However, AMS environments keep the\n // empty row if it's the only one.\n // NOTE: Currently, `cell` is the last item added into `row`.\n\n if (row.length === 1 && cell.type === \"styling\" && cell.body[0].body.length === 0 && (body.length > 1 || !emptySingleRow)) {\n body.pop();\n }\n\n if (hLinesBeforeRow.length < body.length + 1) {\n hLinesBeforeRow.push([]);\n }\n\n break;\n } else if (next === \"\\\\\\\\\") {\n parser.consume();\n let size; // \\def\\Let@{\\let\\\\\\math@cr}\n // \\def\\math@cr{...\\math@cr@}\n // \\def\\math@cr@{\\new@ifnextchar[\\math@cr@@{\\math@cr@@[\\z@]}}\n // \\def\\math@cr@@[#1]{...\\math@cr@@@...}\n // \\def\\math@cr@@@{\\cr}\n\n if (parser.gullet.future().text !== \" \") {\n size = parser.parseSizeGroup(true);\n }\n\n rowGaps.push(size ? size.value : null);\n endRow(); // check for \\hline(s) following the row separator\n\n hLinesBeforeRow.push(getHLines(parser));\n row = [];\n body.push(row);\n beginRow();\n } else {\n throw new src_ParseError(\"Expected & or \\\\\\\\ or \\\\cr or \\\\end\", parser.nextToken);\n }\n } // End cell group\n\n\n parser.gullet.endGroup(); // End array group defining \\cr\n\n parser.gullet.endGroup();\n return {\n type: \"array\",\n mode: parser.mode,\n addJot,\n arraystretch,\n body,\n cols,\n rowGaps,\n hskipBeforeAndAfter,\n hLinesBeforeRow,\n colSeparationType,\n tags,\n leqno\n };\n} // Decides on a style for cells in an array according to whether the given\n// environment name starts with the letter 'd'.\n\n\nfunction dCellStyle(envName) {\n if (envName.slice(0, 1) === \"d\") {\n return \"display\";\n } else {\n return \"text\";\n }\n}\n\nconst array_htmlBuilder = function (group, options) {\n let r;\n let c;\n const nr = group.body.length;\n const hLinesBeforeRow = group.hLinesBeforeRow;\n let nc = 0;\n let body = new Array(nr);\n const hlines = [];\n const ruleThickness = Math.max( // From LaTeX \\showthe\\arrayrulewidth. Equals 0.04 em.\n options.fontMetrics().arrayRuleWidth, options.minRuleThickness // User override.\n ); // Horizontal spacing\n\n const pt = 1 / options.fontMetrics().ptPerEm;\n let arraycolsep = 5 * pt; // default value, i.e. \\arraycolsep in article.cls\n\n if (group.colSeparationType && group.colSeparationType === \"small\") {\n // We're in a {smallmatrix}. Default column space is \\thickspace,\n // i.e. 5/18em = 0.2778em, per amsmath.dtx for {smallmatrix}.\n // But that needs adjustment because LaTeX applies \\scriptstyle to the\n // entire array, including the colspace, but this function applies\n // \\scriptstyle only inside each element.\n const localMultiplier = options.havingStyle(src_Style.SCRIPT).sizeMultiplier;\n arraycolsep = 0.2778 * (localMultiplier / options.sizeMultiplier);\n } // Vertical spacing\n\n\n const baselineskip = group.colSeparationType === \"CD\" ? calculateSize({\n number: 3,\n unit: \"ex\"\n }, options) : 12 * pt; // see size10.clo\n // Default \\jot from ltmath.dtx\n // TODO(edemaine): allow overriding \\jot via \\setlength (#687)\n\n const jot = 3 * pt;\n const arrayskip = group.arraystretch * baselineskip;\n const arstrutHeight = 0.7 * arrayskip; // \\strutbox in ltfsstrc.dtx and\n\n const arstrutDepth = 0.3 * arrayskip; // \\@arstrutbox in lttab.dtx\n\n let totalHeight = 0; // Set a position for \\hline(s) at the top of the array, if any.\n\n function setHLinePos(hlinesInGap) {\n for (let i = 0; i < hlinesInGap.length; ++i) {\n if (i > 0) {\n totalHeight += 0.25;\n }\n\n hlines.push({\n pos: totalHeight,\n isDashed: hlinesInGap[i]\n });\n }\n }\n\n setHLinePos(hLinesBeforeRow[0]);\n\n for (r = 0; r < group.body.length; ++r) {\n const inrow = group.body[r];\n let height = arstrutHeight; // \\@array adds an \\@arstrut\n\n let depth = arstrutDepth; // to each tow (via the template)\n\n if (nc < inrow.length) {\n nc = inrow.length;\n }\n\n const outrow = new Array(inrow.length);\n\n for (c = 0; c < inrow.length; ++c) {\n const elt = buildGroup(inrow[c], options);\n\n if (depth < elt.depth) {\n depth = elt.depth;\n }\n\n if (height < elt.height) {\n height = elt.height;\n }\n\n outrow[c] = elt;\n }\n\n const rowGap = group.rowGaps[r];\n let gap = 0;\n\n if (rowGap) {\n gap = calculateSize(rowGap, options);\n\n if (gap > 0) {\n // \\@argarraycr\n gap += arstrutDepth;\n\n if (depth < gap) {\n depth = gap; // \\@xargarraycr\n }\n\n gap = 0;\n }\n } // In AMS multiline environments such as aligned and gathered, rows\n // correspond to lines that have additional \\jot added to the\n // \\baselineskip via \\openup.\n\n\n if (group.addJot) {\n depth += jot;\n }\n\n outrow.height = height;\n outrow.depth = depth;\n totalHeight += height;\n outrow.pos = totalHeight;\n totalHeight += depth + gap; // \\@yargarraycr\n\n body[r] = outrow; // Set a position for \\hline(s), if any.\n\n setHLinePos(hLinesBeforeRow[r + 1]);\n }\n\n const offset = totalHeight / 2 + options.fontMetrics().axisHeight;\n const colDescriptions = group.cols || [];\n const cols = [];\n let colSep;\n let colDescrNum;\n const tagSpans = [];\n\n if (group.tags && group.tags.some(tag => tag)) {\n // An environment with manual tags and/or automatic equation numbers.\n // Create node(s), the latter of which trigger CSS counter increment.\n for (r = 0; r < nr; ++r) {\n const rw = body[r];\n const shift = rw.pos - offset;\n const tag = group.tags[r];\n let tagSpan;\n\n if (tag === true) {\n // automatic numbering\n tagSpan = buildCommon.makeSpan([\"eqn-num\"], [], options);\n } else if (tag === false) {\n // \\nonumber/\\notag or starred environment\n tagSpan = buildCommon.makeSpan([], [], options);\n } else {\n // manual \\tag\n tagSpan = buildCommon.makeSpan([], buildExpression(tag, options, true), options);\n }\n\n tagSpan.depth = rw.depth;\n tagSpan.height = rw.height;\n tagSpans.push({\n type: \"elem\",\n elem: tagSpan,\n shift\n });\n }\n }\n\n for (c = 0, colDescrNum = 0; // Continue while either there are more columns or more column\n // descriptions, so trailing separators don't get lost.\n c < nc || colDescrNum < colDescriptions.length; ++c, ++colDescrNum) {\n let colDescr = colDescriptions[colDescrNum] || {};\n let firstSeparator = true;\n\n while (colDescr.type === \"separator\") {\n // If there is more than one separator in a row, add a space\n // between them.\n if (!firstSeparator) {\n colSep = buildCommon.makeSpan([\"arraycolsep\"], []);\n colSep.style.width = makeEm(options.fontMetrics().doubleRuleSep);\n cols.push(colSep);\n }\n\n if (colDescr.separator === \"|\" || colDescr.separator === \":\") {\n const lineType = colDescr.separator === \"|\" ? \"solid\" : \"dashed\";\n const separator = buildCommon.makeSpan([\"vertical-separator\"], [], options);\n separator.style.height = makeEm(totalHeight);\n separator.style.borderRightWidth = makeEm(ruleThickness);\n separator.style.borderRightStyle = lineType;\n separator.style.margin = \"0 \" + makeEm(-ruleThickness / 2);\n const shift = totalHeight - offset;\n\n if (shift) {\n separator.style.verticalAlign = makeEm(-shift);\n }\n\n cols.push(separator);\n } else {\n throw new src_ParseError(\"Invalid separator type: \" + colDescr.separator);\n }\n\n colDescrNum++;\n colDescr = colDescriptions[colDescrNum] || {};\n firstSeparator = false;\n }\n\n if (c >= nc) {\n continue;\n }\n\n let sepwidth;\n\n if (c > 0 || group.hskipBeforeAndAfter) {\n sepwidth = utils.deflt(colDescr.pregap, arraycolsep);\n\n if (sepwidth !== 0) {\n colSep = buildCommon.makeSpan([\"arraycolsep\"], []);\n colSep.style.width = makeEm(sepwidth);\n cols.push(colSep);\n }\n }\n\n let col = [];\n\n for (r = 0; r < nr; ++r) {\n const row = body[r];\n const elem = row[c];\n\n if (!elem) {\n continue;\n }\n\n const shift = row.pos - offset;\n elem.depth = row.depth;\n elem.height = row.height;\n col.push({\n type: \"elem\",\n elem: elem,\n shift: shift\n });\n }\n\n col = buildCommon.makeVList({\n positionType: \"individualShift\",\n children: col\n }, options);\n col = buildCommon.makeSpan([\"col-align-\" + (colDescr.align || \"c\")], [col]);\n cols.push(col);\n\n if (c < nc - 1 || group.hskipBeforeAndAfter) {\n sepwidth = utils.deflt(colDescr.postgap, arraycolsep);\n\n if (sepwidth !== 0) {\n colSep = buildCommon.makeSpan([\"arraycolsep\"], []);\n colSep.style.width = makeEm(sepwidth);\n cols.push(colSep);\n }\n }\n }\n\n body = buildCommon.makeSpan([\"mtable\"], cols); // Add \\hline(s), if any.\n\n if (hlines.length > 0) {\n const line = buildCommon.makeLineSpan(\"hline\", options, ruleThickness);\n const dashes = buildCommon.makeLineSpan(\"hdashline\", options, ruleThickness);\n const vListElems = [{\n type: \"elem\",\n elem: body,\n shift: 0\n }];\n\n while (hlines.length > 0) {\n const hline = hlines.pop();\n const lineShift = hline.pos - offset;\n\n if (hline.isDashed) {\n vListElems.push({\n type: \"elem\",\n elem: dashes,\n shift: lineShift\n });\n } else {\n vListElems.push({\n type: \"elem\",\n elem: line,\n shift: lineShift\n });\n }\n }\n\n body = buildCommon.makeVList({\n positionType: \"individualShift\",\n children: vListElems\n }, options);\n }\n\n if (tagSpans.length === 0) {\n return buildCommon.makeSpan([\"mord\"], [body], options);\n } else {\n let eqnNumCol = buildCommon.makeVList({\n positionType: \"individualShift\",\n children: tagSpans\n }, options);\n eqnNumCol = buildCommon.makeSpan([\"tag\"], [eqnNumCol], options);\n return buildCommon.makeFragment([body, eqnNumCol]);\n }\n};\n\nconst alignMap = {\n c: \"center \",\n l: \"left \",\n r: \"right \"\n};\n\nconst array_mathmlBuilder = function (group, options) {\n const tbl = [];\n const glue = new mathMLTree.MathNode(\"mtd\", [], [\"mtr-glue\"]);\n const tag = new mathMLTree.MathNode(\"mtd\", [], [\"mml-eqn-num\"]);\n\n for (let i = 0; i < group.body.length; i++) {\n const rw = group.body[i];\n const row = [];\n\n for (let j = 0; j < rw.length; j++) {\n row.push(new mathMLTree.MathNode(\"mtd\", [buildMathML_buildGroup(rw[j], options)]));\n }\n\n if (group.tags && group.tags[i]) {\n row.unshift(glue);\n row.push(glue);\n\n if (group.leqno) {\n row.unshift(tag);\n } else {\n row.push(tag);\n }\n }\n\n tbl.push(new mathMLTree.MathNode(\"mtr\", row));\n }\n\n let table = new mathMLTree.MathNode(\"mtable\", tbl); // Set column alignment, row spacing, column spacing, and\n // array lines by setting attributes on the table element.\n // Set the row spacing. In MathML, we specify a gap distance.\n // We do not use rowGap[] because MathML automatically increases\n // cell height with the height/depth of the element content.\n // LaTeX \\arraystretch multiplies the row baseline-to-baseline distance.\n // We simulate this by adding (arraystretch - 1)em to the gap. This\n // does a reasonable job of adjusting arrays containing 1 em tall content.\n // The 0.16 and 0.09 values are found empirically. They produce an array\n // similar to LaTeX and in which content does not interfere with \\hlines.\n\n const gap = group.arraystretch === 0.5 ? 0.1 // {smallmatrix}, {subarray}\n : 0.16 + group.arraystretch - 1 + (group.addJot ? 0.09 : 0);\n table.setAttribute(\"rowspacing\", makeEm(gap)); // MathML table lines go only between cells.\n // To place a line on an edge we'll use , if necessary.\n\n let menclose = \"\";\n let align = \"\";\n\n if (group.cols && group.cols.length > 0) {\n // Find column alignment, column spacing, and vertical lines.\n const cols = group.cols;\n let columnLines = \"\";\n let prevTypeWasAlign = false;\n let iStart = 0;\n let iEnd = cols.length;\n\n if (cols[0].type === \"separator\") {\n menclose += \"top \";\n iStart = 1;\n }\n\n if (cols[cols.length - 1].type === \"separator\") {\n menclose += \"bottom \";\n iEnd -= 1;\n }\n\n for (let i = iStart; i < iEnd; i++) {\n if (cols[i].type === \"align\") {\n align += alignMap[cols[i].align];\n\n if (prevTypeWasAlign) {\n columnLines += \"none \";\n }\n\n prevTypeWasAlign = true;\n } else if (cols[i].type === \"separator\") {\n // MathML accepts only single lines between cells.\n // So we read only the first of consecutive separators.\n if (prevTypeWasAlign) {\n columnLines += cols[i].separator === \"|\" ? \"solid \" : \"dashed \";\n prevTypeWasAlign = false;\n }\n }\n }\n\n table.setAttribute(\"columnalign\", align.trim());\n\n if (/[sd]/.test(columnLines)) {\n table.setAttribute(\"columnlines\", columnLines.trim());\n }\n } // Set column spacing.\n\n\n if (group.colSeparationType === \"align\") {\n const cols = group.cols || [];\n let spacing = \"\";\n\n for (let i = 1; i < cols.length; i++) {\n spacing += i % 2 ? \"0em \" : \"1em \";\n }\n\n table.setAttribute(\"columnspacing\", spacing.trim());\n } else if (group.colSeparationType === \"alignat\" || group.colSeparationType === \"gather\") {\n table.setAttribute(\"columnspacing\", \"0em\");\n } else if (group.colSeparationType === \"small\") {\n table.setAttribute(\"columnspacing\", \"0.2778em\");\n } else if (group.colSeparationType === \"CD\") {\n table.setAttribute(\"columnspacing\", \"0.5em\");\n } else {\n table.setAttribute(\"columnspacing\", \"1em\");\n } // Address \\hline and \\hdashline\n\n\n let rowLines = \"\";\n const hlines = group.hLinesBeforeRow;\n menclose += hlines[0].length > 0 ? \"left \" : \"\";\n menclose += hlines[hlines.length - 1].length > 0 ? \"right \" : \"\";\n\n for (let i = 1; i < hlines.length - 1; i++) {\n rowLines += hlines[i].length === 0 ? \"none \" // MathML accepts only a single line between rows. Read one element.\n : hlines[i][0] ? \"dashed \" : \"solid \";\n }\n\n if (/[sd]/.test(rowLines)) {\n table.setAttribute(\"rowlines\", rowLines.trim());\n }\n\n if (menclose !== \"\") {\n table = new mathMLTree.MathNode(\"menclose\", [table]);\n table.setAttribute(\"notation\", menclose.trim());\n }\n\n if (group.arraystretch && group.arraystretch < 1) {\n // A small array. Wrap in scriptstyle so row gap is not too large.\n table = new mathMLTree.MathNode(\"mstyle\", [table]);\n table.setAttribute(\"scriptlevel\", \"1\");\n }\n\n return table;\n}; // Convenience function for align, align*, aligned, alignat, alignat*, alignedat.\n\n\nconst alignedHandler = function (context, args) {\n if (context.envName.indexOf(\"ed\") === -1) {\n validateAmsEnvironmentContext(context);\n }\n\n const cols = [];\n const separationType = context.envName.indexOf(\"at\") > -1 ? \"alignat\" : \"align\";\n const isSplit = context.envName === \"split\";\n const res = parseArray(context.parser, {\n cols,\n addJot: true,\n autoTag: isSplit ? undefined : getAutoTag(context.envName),\n emptySingleRow: true,\n colSeparationType: separationType,\n maxNumCols: isSplit ? 2 : undefined,\n leqno: context.parser.settings.leqno\n }, \"display\"); // Determining number of columns.\n // 1. If the first argument is given, we use it as a number of columns,\n // and makes sure that each row doesn't exceed that number.\n // 2. Otherwise, just count number of columns = maximum number\n // of cells in each row (\"aligned\" mode -- isAligned will be true).\n //\n // At the same time, prepend empty group {} at beginning of every second\n // cell in each row (starting with second cell) so that operators become\n // binary. This behavior is implemented in amsmath's \\start@aligned.\n\n let numMaths;\n let numCols = 0;\n const emptyGroup = {\n type: \"ordgroup\",\n mode: context.mode,\n body: []\n };\n\n if (args[0] && args[0].type === \"ordgroup\") {\n let arg0 = \"\";\n\n for (let i = 0; i < args[0].body.length; i++) {\n const textord = assertNodeType(args[0].body[i], \"textord\");\n arg0 += textord.text;\n }\n\n numMaths = Number(arg0);\n numCols = numMaths * 2;\n }\n\n const isAligned = !numCols;\n res.body.forEach(function (row) {\n for (let i = 1; i < row.length; i += 2) {\n // Modify ordgroup node within styling node\n const styling = assertNodeType(row[i], \"styling\");\n const ordgroup = assertNodeType(styling.body[0], \"ordgroup\");\n ordgroup.body.unshift(emptyGroup);\n }\n\n if (!isAligned) {\n // Case 1\n const curMaths = row.length / 2;\n\n if (numMaths < curMaths) {\n throw new src_ParseError(\"Too many math in a row: \" + (\"expected \" + numMaths + \", but got \" + curMaths), row[0]);\n }\n } else if (numCols < row.length) {\n // Case 2\n numCols = row.length;\n }\n }); // Adjusting alignment.\n // In aligned mode, we add one \\qquad between columns;\n // otherwise we add nothing.\n\n for (let i = 0; i < numCols; ++i) {\n let align = \"r\";\n let pregap = 0;\n\n if (i % 2 === 1) {\n align = \"l\";\n } else if (i > 0 && isAligned) {\n // \"aligned\" mode.\n pregap = 1; // add one \\quad\n }\n\n cols[i] = {\n type: \"align\",\n align: align,\n pregap: pregap,\n postgap: 0\n };\n }\n\n res.colSeparationType = isAligned ? \"align\" : \"alignat\";\n return res;\n}; // Arrays are part of LaTeX, defined in lttab.dtx so its documentation\n// is part of the source2e.pdf file of LaTeX2e source documentation.\n// {darray} is an {array} environment where cells are set in \\displaystyle,\n// as defined in nccmath.sty.\n\n\ndefineEnvironment({\n type: \"array\",\n names: [\"array\", \"darray\"],\n props: {\n numArgs: 1\n },\n\n handler(context, args) {\n // Since no types are specified above, the two possibilities are\n // - The argument is wrapped in {} or [], in which case Parser's\n // parseGroup() returns an \"ordgroup\" wrapping some symbol node.\n // - The argument is a bare symbol node.\n const symNode = checkSymbolNodeType(args[0]);\n const colalign = symNode ? [args[0]] : assertNodeType(args[0], \"ordgroup\").body;\n const cols = colalign.map(function (nde) {\n const node = assertSymbolNodeType(nde);\n const ca = node.text;\n\n if (\"lcr\".indexOf(ca) !== -1) {\n return {\n type: \"align\",\n align: ca\n };\n } else if (ca === \"|\") {\n return {\n type: \"separator\",\n separator: \"|\"\n };\n } else if (ca === \":\") {\n return {\n type: \"separator\",\n separator: \":\"\n };\n }\n\n throw new src_ParseError(\"Unknown column alignment: \" + ca, nde);\n });\n const res = {\n cols,\n hskipBeforeAndAfter: true,\n // \\@preamble in lttab.dtx\n maxNumCols: cols.length\n };\n return parseArray(context.parser, res, dCellStyle(context.envName));\n },\n\n htmlBuilder: array_htmlBuilder,\n mathmlBuilder: array_mathmlBuilder\n}); // The matrix environments of amsmath builds on the array environment\n// of LaTeX, which is discussed above.\n// The mathtools package adds starred versions of the same environments.\n// These have an optional argument to choose left|center|right justification.\n\ndefineEnvironment({\n type: \"array\",\n names: [\"matrix\", \"pmatrix\", \"bmatrix\", \"Bmatrix\", \"vmatrix\", \"Vmatrix\", \"matrix*\", \"pmatrix*\", \"bmatrix*\", \"Bmatrix*\", \"vmatrix*\", \"Vmatrix*\"],\n props: {\n numArgs: 0\n },\n\n handler(context) {\n const delimiters = {\n \"matrix\": null,\n \"pmatrix\": [\"(\", \")\"],\n \"bmatrix\": [\"[\", \"]\"],\n \"Bmatrix\": [\"\\\\{\", \"\\\\}\"],\n \"vmatrix\": [\"|\", \"|\"],\n \"Vmatrix\": [\"\\\\Vert\", \"\\\\Vert\"]\n }[context.envName.replace(\"*\", \"\")]; // \\hskip -\\arraycolsep in amsmath\n\n let colAlign = \"c\";\n const payload = {\n hskipBeforeAndAfter: false,\n cols: [{\n type: \"align\",\n align: colAlign\n }]\n };\n\n if (context.envName.charAt(context.envName.length - 1) === \"*\") {\n // It's one of the mathtools starred functions.\n // Parse the optional alignment argument.\n const parser = context.parser;\n parser.consumeSpaces();\n\n if (parser.fetch().text === \"[\") {\n parser.consume();\n parser.consumeSpaces();\n colAlign = parser.fetch().text;\n\n if (\"lcr\".indexOf(colAlign) === -1) {\n throw new src_ParseError(\"Expected l or c or r\", parser.nextToken);\n }\n\n parser.consume();\n parser.consumeSpaces();\n parser.expect(\"]\");\n parser.consume();\n payload.cols = [{\n type: \"align\",\n align: colAlign\n }];\n }\n }\n\n const res = parseArray(context.parser, payload, dCellStyle(context.envName)); // Populate cols with the correct number of column alignment specs.\n\n const numCols = Math.max(0, ...res.body.map(row => row.length));\n res.cols = new Array(numCols).fill({\n type: \"align\",\n align: colAlign\n });\n return delimiters ? {\n type: \"leftright\",\n mode: context.mode,\n body: [res],\n left: delimiters[0],\n right: delimiters[1],\n rightColor: undefined // \\right uninfluenced by \\color in array\n\n } : res;\n },\n\n htmlBuilder: array_htmlBuilder,\n mathmlBuilder: array_mathmlBuilder\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"smallmatrix\"],\n props: {\n numArgs: 0\n },\n\n handler(context) {\n const payload = {\n arraystretch: 0.5\n };\n const res = parseArray(context.parser, payload, \"script\");\n res.colSeparationType = \"small\";\n return res;\n },\n\n htmlBuilder: array_htmlBuilder,\n mathmlBuilder: array_mathmlBuilder\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"subarray\"],\n props: {\n numArgs: 1\n },\n\n handler(context, args) {\n // Parsing of {subarray} is similar to {array}\n const symNode = checkSymbolNodeType(args[0]);\n const colalign = symNode ? [args[0]] : assertNodeType(args[0], \"ordgroup\").body;\n const cols = colalign.map(function (nde) {\n const node = assertSymbolNodeType(nde);\n const ca = node.text; // {subarray} only recognizes \"l\" & \"c\"\n\n if (\"lc\".indexOf(ca) !== -1) {\n return {\n type: \"align\",\n align: ca\n };\n }\n\n throw new src_ParseError(\"Unknown column alignment: \" + ca, nde);\n });\n\n if (cols.length > 1) {\n throw new src_ParseError(\"{subarray} can contain only one column\");\n }\n\n let res = {\n cols,\n hskipBeforeAndAfter: false,\n arraystretch: 0.5\n };\n res = parseArray(context.parser, res, \"script\");\n\n if (res.body.length > 0 && res.body[0].length > 1) {\n throw new src_ParseError(\"{subarray} can contain only one column\");\n }\n\n return res;\n },\n\n htmlBuilder: array_htmlBuilder,\n mathmlBuilder: array_mathmlBuilder\n}); // A cases environment (in amsmath.sty) is almost equivalent to\n// \\def\\arraystretch{1.2}%\n// \\left\\{\\begin{array}{@{}l@{\\quad}l@{}} … \\end{array}\\right.\n// {dcases} is a {cases} environment where cells are set in \\displaystyle,\n// as defined in mathtools.sty.\n// {rcases} is another mathtools environment. It's brace is on the right side.\n\ndefineEnvironment({\n type: \"array\",\n names: [\"cases\", \"dcases\", \"rcases\", \"drcases\"],\n props: {\n numArgs: 0\n },\n\n handler(context) {\n const payload = {\n arraystretch: 1.2,\n cols: [{\n type: \"align\",\n align: \"l\",\n pregap: 0,\n // TODO(kevinb) get the current style.\n // For now we use the metrics for TEXT style which is what we were\n // doing before. Before attempting to get the current style we\n // should look at TeX's behavior especially for \\over and matrices.\n postgap: 1.0\n /* 1em quad */\n\n }, {\n type: \"align\",\n align: \"l\",\n pregap: 0,\n postgap: 0\n }]\n };\n const res = parseArray(context.parser, payload, dCellStyle(context.envName));\n return {\n type: \"leftright\",\n mode: context.mode,\n body: [res],\n left: context.envName.indexOf(\"r\") > -1 ? \".\" : \"\\\\{\",\n right: context.envName.indexOf(\"r\") > -1 ? \"\\\\}\" : \".\",\n rightColor: undefined\n };\n },\n\n htmlBuilder: array_htmlBuilder,\n mathmlBuilder: array_mathmlBuilder\n}); // In the align environment, one uses ampersands, &, to specify number of\n// columns in each row, and to locate spacing between each column.\n// align gets automatic numbering. align* and aligned do not.\n// The alignedat environment can be used in math mode.\n// Note that we assume \\nomallineskiplimit to be zero,\n// so that \\strut@ is the same as \\strut.\n\ndefineEnvironment({\n type: \"array\",\n names: [\"align\", \"align*\", \"aligned\", \"split\"],\n props: {\n numArgs: 0\n },\n handler: alignedHandler,\n htmlBuilder: array_htmlBuilder,\n mathmlBuilder: array_mathmlBuilder\n}); // A gathered environment is like an array environment with one centered\n// column, but where rows are considered lines so get \\jot line spacing\n// and contents are set in \\displaystyle.\n\ndefineEnvironment({\n type: \"array\",\n names: [\"gathered\", \"gather\", \"gather*\"],\n props: {\n numArgs: 0\n },\n\n handler(context) {\n if (utils.contains([\"gather\", \"gather*\"], context.envName)) {\n validateAmsEnvironmentContext(context);\n }\n\n const res = {\n cols: [{\n type: \"align\",\n align: \"c\"\n }],\n addJot: true,\n colSeparationType: \"gather\",\n autoTag: getAutoTag(context.envName),\n emptySingleRow: true,\n leqno: context.parser.settings.leqno\n };\n return parseArray(context.parser, res, \"display\");\n },\n\n htmlBuilder: array_htmlBuilder,\n mathmlBuilder: array_mathmlBuilder\n}); // alignat environment is like an align environment, but one must explicitly\n// specify maximum number of columns in each row, and can adjust spacing between\n// each columns.\n\ndefineEnvironment({\n type: \"array\",\n names: [\"alignat\", \"alignat*\", \"alignedat\"],\n props: {\n numArgs: 1\n },\n handler: alignedHandler,\n htmlBuilder: array_htmlBuilder,\n mathmlBuilder: array_mathmlBuilder\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"equation\", \"equation*\"],\n props: {\n numArgs: 0\n },\n\n handler(context) {\n validateAmsEnvironmentContext(context);\n const res = {\n autoTag: getAutoTag(context.envName),\n emptySingleRow: true,\n singleRow: true,\n maxNumCols: 1,\n leqno: context.parser.settings.leqno\n };\n return parseArray(context.parser, res, \"display\");\n },\n\n htmlBuilder: array_htmlBuilder,\n mathmlBuilder: array_mathmlBuilder\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"CD\"],\n props: {\n numArgs: 0\n },\n\n handler(context) {\n validateAmsEnvironmentContext(context);\n return parseCD(context.parser);\n },\n\n htmlBuilder: array_htmlBuilder,\n mathmlBuilder: array_mathmlBuilder\n});\ndefineMacro(\"\\\\nonumber\", \"\\\\gdef\\\\@eqnsw{0}\");\ndefineMacro(\"\\\\notag\", \"\\\\nonumber\"); // Catch \\hline outside array environment\n\ndefineFunction({\n type: \"text\",\n // Doesn't matter what this is.\n names: [\"\\\\hline\", \"\\\\hdashline\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n allowedInMath: true\n },\n\n handler(context, args) {\n throw new src_ParseError(context.funcName + \" valid only within array environment\");\n }\n\n});\n;// CONCATENATED MODULE: ./src/environments.js\n\nconst environments = _environments;\n/* harmony default export */ var src_environments = (environments); // All environment definitions should be imported below\n\n\n;// CONCATENATED MODULE: ./src/functions/environment.js\n\n\n\n // Environment delimiters. HTML/MathML rendering is defined in the corresponding\n// defineEnvironment definitions.\n\ndefineFunction({\n type: \"environment\",\n names: [\"\\\\begin\", \"\\\\end\"],\n props: {\n numArgs: 1,\n argTypes: [\"text\"]\n },\n\n handler(_ref, args) {\n let {\n parser,\n funcName\n } = _ref;\n const nameGroup = args[0];\n\n if (nameGroup.type !== \"ordgroup\") {\n throw new src_ParseError(\"Invalid environment name\", nameGroup);\n }\n\n let envName = \"\";\n\n for (let i = 0; i < nameGroup.body.length; ++i) {\n envName += assertNodeType(nameGroup.body[i], \"textord\").text;\n }\n\n if (funcName === \"\\\\begin\") {\n // begin...end is similar to left...right\n if (!src_environments.hasOwnProperty(envName)) {\n throw new src_ParseError(\"No such environment: \" + envName, nameGroup);\n } // Build the environment object. Arguments and other information will\n // be made available to the begin and end methods using properties.\n\n\n const env = src_environments[envName];\n const {\n args,\n optArgs\n } = parser.parseArguments(\"\\\\begin{\" + envName + \"}\", env);\n const context = {\n mode: parser.mode,\n envName,\n parser\n };\n const result = env.handler(context, args, optArgs);\n parser.expect(\"\\\\end\", false);\n const endNameToken = parser.nextToken;\n const end = assertNodeType(parser.parseFunction(), \"environment\");\n\n if (end.name !== envName) {\n throw new src_ParseError(\"Mismatch: \\\\begin{\" + envName + \"} matched by \\\\end{\" + end.name + \"}\", endNameToken);\n } // $FlowFixMe, \"environment\" handler returns an environment ParseNode\n\n\n return result;\n }\n\n return {\n type: \"environment\",\n mode: parser.mode,\n name: envName,\n nameGroup\n };\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/font.js\n// TODO(kevinb): implement \\\\sl and \\\\sc\n\n\n\n\n\n\nconst font_htmlBuilder = (group, options) => {\n const font = group.font;\n const newOptions = options.withFont(font);\n return buildGroup(group.body, newOptions);\n};\n\nconst font_mathmlBuilder = (group, options) => {\n const font = group.font;\n const newOptions = options.withFont(font);\n return buildMathML_buildGroup(group.body, newOptions);\n};\n\nconst fontAliases = {\n \"\\\\Bbb\": \"\\\\mathbb\",\n \"\\\\bold\": \"\\\\mathbf\",\n \"\\\\frak\": \"\\\\mathfrak\",\n \"\\\\bm\": \"\\\\boldsymbol\"\n};\ndefineFunction({\n type: \"font\",\n names: [// styles, except \\boldsymbol defined below\n \"\\\\mathrm\", \"\\\\mathit\", \"\\\\mathbf\", \"\\\\mathnormal\", // families\n \"\\\\mathbb\", \"\\\\mathcal\", \"\\\\mathfrak\", \"\\\\mathscr\", \"\\\\mathsf\", \"\\\\mathtt\", // aliases, except \\bm defined below\n \"\\\\Bbb\", \"\\\\bold\", \"\\\\frak\"],\n props: {\n numArgs: 1,\n allowedInArgument: true\n },\n handler: (_ref, args) => {\n let {\n parser,\n funcName\n } = _ref;\n const body = normalizeArgument(args[0]);\n let func = funcName;\n\n if (func in fontAliases) {\n func = fontAliases[func];\n }\n\n return {\n type: \"font\",\n mode: parser.mode,\n font: func.slice(1),\n body\n };\n },\n htmlBuilder: font_htmlBuilder,\n mathmlBuilder: font_mathmlBuilder\n});\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\boldsymbol\", \"\\\\bm\"],\n props: {\n numArgs: 1\n },\n handler: (_ref2, args) => {\n let {\n parser\n } = _ref2;\n const body = args[0];\n const isCharacterBox = utils.isCharacterBox(body); // amsbsy.sty's \\boldsymbol uses \\binrel spacing to inherit the\n // argument's bin|rel|ord status\n\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass: binrelClass(body),\n body: [{\n type: \"font\",\n mode: parser.mode,\n font: \"boldsymbol\",\n body\n }],\n isCharacterBox: isCharacterBox\n };\n }\n}); // Old font changing functions\n\ndefineFunction({\n type: \"font\",\n names: [\"\\\\rm\", \"\\\\sf\", \"\\\\tt\", \"\\\\bf\", \"\\\\it\", \"\\\\cal\"],\n props: {\n numArgs: 0,\n allowedInText: true\n },\n handler: (_ref3, args) => {\n let {\n parser,\n funcName,\n breakOnTokenText\n } = _ref3;\n const {\n mode\n } = parser;\n const body = parser.parseExpression(true, breakOnTokenText);\n const style = \"math\" + funcName.slice(1);\n return {\n type: \"font\",\n mode: mode,\n font: style,\n body: {\n type: \"ordgroup\",\n mode: parser.mode,\n body\n }\n };\n },\n htmlBuilder: font_htmlBuilder,\n mathmlBuilder: font_mathmlBuilder\n});\n;// CONCATENATED MODULE: ./src/functions/genfrac.js\n\n\n\n\n\n\n\n\n\n\n\nconst adjustStyle = (size, originalStyle) => {\n // Figure out what style this fraction should be in based on the\n // function used\n let style = originalStyle;\n\n if (size === \"display\") {\n // Get display style as a default.\n // If incoming style is sub/sup, use style.text() to get correct size.\n style = style.id >= src_Style.SCRIPT.id ? style.text() : src_Style.DISPLAY;\n } else if (size === \"text\" && style.size === src_Style.DISPLAY.size) {\n // We're in a \\tfrac but incoming style is displaystyle, so:\n style = src_Style.TEXT;\n } else if (size === \"script\") {\n style = src_Style.SCRIPT;\n } else if (size === \"scriptscript\") {\n style = src_Style.SCRIPTSCRIPT;\n }\n\n return style;\n};\n\nconst genfrac_htmlBuilder = (group, options) => {\n // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).\n const style = adjustStyle(group.size, options.style);\n const nstyle = style.fracNum();\n const dstyle = style.fracDen();\n let newOptions;\n newOptions = options.havingStyle(nstyle);\n const numerm = buildGroup(group.numer, newOptions, options);\n\n if (group.continued) {\n // \\cfrac inserts a \\strut into the numerator.\n // Get \\strut dimensions from TeXbook page 353.\n const hStrut = 8.5 / options.fontMetrics().ptPerEm;\n const dStrut = 3.5 / options.fontMetrics().ptPerEm;\n numerm.height = numerm.height < hStrut ? hStrut : numerm.height;\n numerm.depth = numerm.depth < dStrut ? dStrut : numerm.depth;\n }\n\n newOptions = options.havingStyle(dstyle);\n const denomm = buildGroup(group.denom, newOptions, options);\n let rule;\n let ruleWidth;\n let ruleSpacing;\n\n if (group.hasBarLine) {\n if (group.barSize) {\n ruleWidth = calculateSize(group.barSize, options);\n rule = buildCommon.makeLineSpan(\"frac-line\", options, ruleWidth);\n } else {\n rule = buildCommon.makeLineSpan(\"frac-line\", options);\n }\n\n ruleWidth = rule.height;\n ruleSpacing = rule.height;\n } else {\n rule = null;\n ruleWidth = 0;\n ruleSpacing = options.fontMetrics().defaultRuleThickness;\n } // Rule 15b\n\n\n let numShift;\n let clearance;\n let denomShift;\n\n if (style.size === src_Style.DISPLAY.size || group.size === \"display\") {\n numShift = options.fontMetrics().num1;\n\n if (ruleWidth > 0) {\n clearance = 3 * ruleSpacing;\n } else {\n clearance = 7 * ruleSpacing;\n }\n\n denomShift = options.fontMetrics().denom1;\n } else {\n if (ruleWidth > 0) {\n numShift = options.fontMetrics().num2;\n clearance = ruleSpacing;\n } else {\n numShift = options.fontMetrics().num3;\n clearance = 3 * ruleSpacing;\n }\n\n denomShift = options.fontMetrics().denom2;\n }\n\n let frac;\n\n if (!rule) {\n // Rule 15c\n const candidateClearance = numShift - numerm.depth - (denomm.height - denomShift);\n\n if (candidateClearance < clearance) {\n numShift += 0.5 * (clearance - candidateClearance);\n denomShift += 0.5 * (clearance - candidateClearance);\n }\n\n frac = buildCommon.makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: denomm,\n shift: denomShift\n }, {\n type: \"elem\",\n elem: numerm,\n shift: -numShift\n }]\n }, options);\n } else {\n // Rule 15d\n const axisHeight = options.fontMetrics().axisHeight;\n\n if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) {\n numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth));\n }\n\n if (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift) < clearance) {\n denomShift += clearance - (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift));\n }\n\n const midShift = -(axisHeight - 0.5 * ruleWidth);\n frac = buildCommon.makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: denomm,\n shift: denomShift\n }, {\n type: \"elem\",\n elem: rule,\n shift: midShift\n }, {\n type: \"elem\",\n elem: numerm,\n shift: -numShift\n }]\n }, options);\n } // Since we manually change the style sometimes (with \\dfrac or \\tfrac),\n // account for the possible size change here.\n\n\n newOptions = options.havingStyle(style);\n frac.height *= newOptions.sizeMultiplier / options.sizeMultiplier;\n frac.depth *= newOptions.sizeMultiplier / options.sizeMultiplier; // Rule 15e\n\n let delimSize;\n\n if (style.size === src_Style.DISPLAY.size) {\n delimSize = options.fontMetrics().delim1;\n } else if (style.size === src_Style.SCRIPTSCRIPT.size) {\n delimSize = options.havingStyle(src_Style.SCRIPT).fontMetrics().delim2;\n } else {\n delimSize = options.fontMetrics().delim2;\n }\n\n let leftDelim;\n let rightDelim;\n\n if (group.leftDelim == null) {\n leftDelim = makeNullDelimiter(options, [\"mopen\"]);\n } else {\n leftDelim = delimiter.customSizedDelim(group.leftDelim, delimSize, true, options.havingStyle(style), group.mode, [\"mopen\"]);\n }\n\n if (group.continued) {\n rightDelim = buildCommon.makeSpan([]); // zero width for \\cfrac\n } else if (group.rightDelim == null) {\n rightDelim = makeNullDelimiter(options, [\"mclose\"]);\n } else {\n rightDelim = delimiter.customSizedDelim(group.rightDelim, delimSize, true, options.havingStyle(style), group.mode, [\"mclose\"]);\n }\n\n return buildCommon.makeSpan([\"mord\"].concat(newOptions.sizingClasses(options)), [leftDelim, buildCommon.makeSpan([\"mfrac\"], [frac]), rightDelim], options);\n};\n\nconst genfrac_mathmlBuilder = (group, options) => {\n let node = new mathMLTree.MathNode(\"mfrac\", [buildMathML_buildGroup(group.numer, options), buildMathML_buildGroup(group.denom, options)]);\n\n if (!group.hasBarLine) {\n node.setAttribute(\"linethickness\", \"0px\");\n } else if (group.barSize) {\n const ruleWidth = calculateSize(group.barSize, options);\n node.setAttribute(\"linethickness\", makeEm(ruleWidth));\n }\n\n const style = adjustStyle(group.size, options.style);\n\n if (style.size !== options.style.size) {\n node = new mathMLTree.MathNode(\"mstyle\", [node]);\n const isDisplay = style.size === src_Style.DISPLAY.size ? \"true\" : \"false\";\n node.setAttribute(\"displaystyle\", isDisplay);\n node.setAttribute(\"scriptlevel\", \"0\");\n }\n\n if (group.leftDelim != null || group.rightDelim != null) {\n const withDelims = [];\n\n if (group.leftDelim != null) {\n const leftOp = new mathMLTree.MathNode(\"mo\", [new mathMLTree.TextNode(group.leftDelim.replace(\"\\\\\", \"\"))]);\n leftOp.setAttribute(\"fence\", \"true\");\n withDelims.push(leftOp);\n }\n\n withDelims.push(node);\n\n if (group.rightDelim != null) {\n const rightOp = new mathMLTree.MathNode(\"mo\", [new mathMLTree.TextNode(group.rightDelim.replace(\"\\\\\", \"\"))]);\n rightOp.setAttribute(\"fence\", \"true\");\n withDelims.push(rightOp);\n }\n\n return makeRow(withDelims);\n }\n\n return node;\n};\n\ndefineFunction({\n type: \"genfrac\",\n names: [\"\\\\dfrac\", \"\\\\frac\", \"\\\\tfrac\", \"\\\\dbinom\", \"\\\\binom\", \"\\\\tbinom\", \"\\\\\\\\atopfrac\", // can’t be entered directly\n \"\\\\\\\\bracefrac\", \"\\\\\\\\brackfrac\" // ditto\n ],\n props: {\n numArgs: 2,\n allowedInArgument: true\n },\n handler: (_ref, args) => {\n let {\n parser,\n funcName\n } = _ref;\n const numer = args[0];\n const denom = args[1];\n let hasBarLine;\n let leftDelim = null;\n let rightDelim = null;\n let size = \"auto\";\n\n switch (funcName) {\n case \"\\\\dfrac\":\n case \"\\\\frac\":\n case \"\\\\tfrac\":\n hasBarLine = true;\n break;\n\n case \"\\\\\\\\atopfrac\":\n hasBarLine = false;\n break;\n\n case \"\\\\dbinom\":\n case \"\\\\binom\":\n case \"\\\\tbinom\":\n hasBarLine = false;\n leftDelim = \"(\";\n rightDelim = \")\";\n break;\n\n case \"\\\\\\\\bracefrac\":\n hasBarLine = false;\n leftDelim = \"\\\\{\";\n rightDelim = \"\\\\}\";\n break;\n\n case \"\\\\\\\\brackfrac\":\n hasBarLine = false;\n leftDelim = \"[\";\n rightDelim = \"]\";\n break;\n\n default:\n throw new Error(\"Unrecognized genfrac command\");\n }\n\n switch (funcName) {\n case \"\\\\dfrac\":\n case \"\\\\dbinom\":\n size = \"display\";\n break;\n\n case \"\\\\tfrac\":\n case \"\\\\tbinom\":\n size = \"text\";\n break;\n }\n\n return {\n type: \"genfrac\",\n mode: parser.mode,\n continued: false,\n numer,\n denom,\n hasBarLine,\n leftDelim,\n rightDelim,\n size,\n barSize: null\n };\n },\n htmlBuilder: genfrac_htmlBuilder,\n mathmlBuilder: genfrac_mathmlBuilder\n});\ndefineFunction({\n type: \"genfrac\",\n names: [\"\\\\cfrac\"],\n props: {\n numArgs: 2\n },\n handler: (_ref2, args) => {\n let {\n parser,\n funcName\n } = _ref2;\n const numer = args[0];\n const denom = args[1];\n return {\n type: \"genfrac\",\n mode: parser.mode,\n continued: true,\n numer,\n denom,\n hasBarLine: true,\n leftDelim: null,\n rightDelim: null,\n size: \"display\",\n barSize: null\n };\n }\n}); // Infix generalized fractions -- these are not rendered directly, but replaced\n// immediately by one of the variants above.\n\ndefineFunction({\n type: \"infix\",\n names: [\"\\\\over\", \"\\\\choose\", \"\\\\atop\", \"\\\\brace\", \"\\\\brack\"],\n props: {\n numArgs: 0,\n infix: true\n },\n\n handler(_ref3) {\n let {\n parser,\n funcName,\n token\n } = _ref3;\n let replaceWith;\n\n switch (funcName) {\n case \"\\\\over\":\n replaceWith = \"\\\\frac\";\n break;\n\n case \"\\\\choose\":\n replaceWith = \"\\\\binom\";\n break;\n\n case \"\\\\atop\":\n replaceWith = \"\\\\\\\\atopfrac\";\n break;\n\n case \"\\\\brace\":\n replaceWith = \"\\\\\\\\bracefrac\";\n break;\n\n case \"\\\\brack\":\n replaceWith = \"\\\\\\\\brackfrac\";\n break;\n\n default:\n throw new Error(\"Unrecognized infix genfrac command\");\n }\n\n return {\n type: \"infix\",\n mode: parser.mode,\n replaceWith,\n token\n };\n }\n\n});\nconst stylArray = [\"display\", \"text\", \"script\", \"scriptscript\"];\n\nconst delimFromValue = function (delimString) {\n let delim = null;\n\n if (delimString.length > 0) {\n delim = delimString;\n delim = delim === \".\" ? null : delim;\n }\n\n return delim;\n};\n\ndefineFunction({\n type: \"genfrac\",\n names: [\"\\\\genfrac\"],\n props: {\n numArgs: 6,\n allowedInArgument: true,\n argTypes: [\"math\", \"math\", \"size\", \"text\", \"math\", \"math\"]\n },\n\n handler(_ref4, args) {\n let {\n parser\n } = _ref4;\n const numer = args[4];\n const denom = args[5]; // Look into the parse nodes to get the desired delimiters.\n\n const leftNode = normalizeArgument(args[0]);\n const leftDelim = leftNode.type === \"atom\" && leftNode.family === \"open\" ? delimFromValue(leftNode.text) : null;\n const rightNode = normalizeArgument(args[1]);\n const rightDelim = rightNode.type === \"atom\" && rightNode.family === \"close\" ? delimFromValue(rightNode.text) : null;\n const barNode = assertNodeType(args[2], \"size\");\n let hasBarLine;\n let barSize = null;\n\n if (barNode.isBlank) {\n // \\genfrac acts differently than \\above.\n // \\genfrac treats an empty size group as a signal to use a\n // standard bar size. \\above would see size = 0 and omit the bar.\n hasBarLine = true;\n } else {\n barSize = barNode.value;\n hasBarLine = barSize.number > 0;\n } // Find out if we want displaystyle, textstyle, etc.\n\n\n let size = \"auto\";\n let styl = args[3];\n\n if (styl.type === \"ordgroup\") {\n if (styl.body.length > 0) {\n const textOrd = assertNodeType(styl.body[0], \"textord\");\n size = stylArray[Number(textOrd.text)];\n }\n } else {\n styl = assertNodeType(styl, \"textord\");\n size = stylArray[Number(styl.text)];\n }\n\n return {\n type: \"genfrac\",\n mode: parser.mode,\n numer,\n denom,\n continued: false,\n hasBarLine,\n barSize,\n leftDelim,\n rightDelim,\n size\n };\n },\n\n htmlBuilder: genfrac_htmlBuilder,\n mathmlBuilder: genfrac_mathmlBuilder\n}); // \\above is an infix fraction that also defines a fraction bar size.\n\ndefineFunction({\n type: \"infix\",\n names: [\"\\\\above\"],\n props: {\n numArgs: 1,\n argTypes: [\"size\"],\n infix: true\n },\n\n handler(_ref5, args) {\n let {\n parser,\n funcName,\n token\n } = _ref5;\n return {\n type: \"infix\",\n mode: parser.mode,\n replaceWith: \"\\\\\\\\abovefrac\",\n size: assertNodeType(args[0], \"size\").value,\n token\n };\n }\n\n});\ndefineFunction({\n type: \"genfrac\",\n names: [\"\\\\\\\\abovefrac\"],\n props: {\n numArgs: 3,\n argTypes: [\"math\", \"size\", \"math\"]\n },\n handler: (_ref6, args) => {\n let {\n parser,\n funcName\n } = _ref6;\n const numer = args[0];\n const barSize = assert(assertNodeType(args[1], \"infix\").size);\n const denom = args[2];\n const hasBarLine = barSize.number > 0;\n return {\n type: \"genfrac\",\n mode: parser.mode,\n numer,\n denom,\n continued: false,\n hasBarLine,\n barSize,\n leftDelim: null,\n rightDelim: null,\n size: \"auto\"\n };\n },\n htmlBuilder: genfrac_htmlBuilder,\n mathmlBuilder: genfrac_mathmlBuilder\n});\n;// CONCATENATED MODULE: ./src/functions/horizBrace.js\n\n\n\n\n\n\n\n\n// NOTE: Unlike most `htmlBuilder`s, this one handles not only \"horizBrace\", but\n// also \"supsub\" since an over/underbrace can affect super/subscripting.\nconst horizBrace_htmlBuilder = (grp, options) => {\n const style = options.style; // Pull out the `ParseNode<\"horizBrace\">` if `grp` is a \"supsub\" node.\n\n let supSubGroup;\n let group;\n\n if (grp.type === \"supsub\") {\n // Ref: LaTeX source2e: }}}}\\limits}\n // i.e. LaTeX treats the brace similar to an op and passes it\n // with \\limits, so we need to assign supsub style.\n supSubGroup = grp.sup ? buildGroup(grp.sup, options.havingStyle(style.sup()), options) : buildGroup(grp.sub, options.havingStyle(style.sub()), options);\n group = assertNodeType(grp.base, \"horizBrace\");\n } else {\n group = assertNodeType(grp, \"horizBrace\");\n } // Build the base group\n\n\n const body = buildGroup(group.base, options.havingBaseStyle(src_Style.DISPLAY)); // Create the stretchy element\n\n const braceBody = stretchy.svgSpan(group, options); // Generate the vlist, with the appropriate kerns ┏━━━━━━━━┓\n // This first vlist contains the content and the brace: equation\n\n let vlist;\n\n if (group.isOver) {\n vlist = buildCommon.makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: body\n }, {\n type: \"kern\",\n size: 0.1\n }, {\n type: \"elem\",\n elem: braceBody\n }]\n }, options); // $FlowFixMe: Replace this with passing \"svg-align\" into makeVList.\n\n vlist.children[0].children[0].children[1].classes.push(\"svg-align\");\n } else {\n vlist = buildCommon.makeVList({\n positionType: \"bottom\",\n positionData: body.depth + 0.1 + braceBody.height,\n children: [{\n type: \"elem\",\n elem: braceBody\n }, {\n type: \"kern\",\n size: 0.1\n }, {\n type: \"elem\",\n elem: body\n }]\n }, options); // $FlowFixMe: Replace this with passing \"svg-align\" into makeVList.\n\n vlist.children[0].children[0].children[0].classes.push(\"svg-align\");\n }\n\n if (supSubGroup) {\n // To write the supsub, wrap the first vlist in another vlist:\n // They can't all go in the same vlist, because the note might be\n // wider than the equation. We want the equation to control the\n // brace width.\n // note long note long note\n // ┏━━━━━━━━┓ or ┏━━━┓ not ┏━━━━━━━━━┓\n // equation eqn eqn\n const vSpan = buildCommon.makeSpan([\"mord\", group.isOver ? \"mover\" : \"munder\"], [vlist], options);\n\n if (group.isOver) {\n vlist = buildCommon.makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: vSpan\n }, {\n type: \"kern\",\n size: 0.2\n }, {\n type: \"elem\",\n elem: supSubGroup\n }]\n }, options);\n } else {\n vlist = buildCommon.makeVList({\n positionType: \"bottom\",\n positionData: vSpan.depth + 0.2 + supSubGroup.height + supSubGroup.depth,\n children: [{\n type: \"elem\",\n elem: supSubGroup\n }, {\n type: \"kern\",\n size: 0.2\n }, {\n type: \"elem\",\n elem: vSpan\n }]\n }, options);\n }\n }\n\n return buildCommon.makeSpan([\"mord\", group.isOver ? \"mover\" : \"munder\"], [vlist], options);\n};\n\nconst horizBrace_mathmlBuilder = (group, options) => {\n const accentNode = stretchy.mathMLnode(group.label);\n return new mathMLTree.MathNode(group.isOver ? \"mover\" : \"munder\", [buildMathML_buildGroup(group.base, options), accentNode]);\n}; // Horizontal stretchy braces\n\n\ndefineFunction({\n type: \"horizBrace\",\n names: [\"\\\\overbrace\", \"\\\\underbrace\"],\n props: {\n numArgs: 1\n },\n\n handler(_ref, args) {\n let {\n parser,\n funcName\n } = _ref;\n return {\n type: \"horizBrace\",\n mode: parser.mode,\n label: funcName,\n isOver: /^\\\\over/.test(funcName),\n base: args[0]\n };\n },\n\n htmlBuilder: horizBrace_htmlBuilder,\n mathmlBuilder: horizBrace_mathmlBuilder\n});\n;// CONCATENATED MODULE: ./src/functions/href.js\n\n\n\n\n\n\ndefineFunction({\n type: \"href\",\n names: [\"\\\\href\"],\n props: {\n numArgs: 2,\n argTypes: [\"url\", \"original\"],\n allowedInText: true\n },\n handler: (_ref, args) => {\n let {\n parser\n } = _ref;\n const body = args[1];\n const href = assertNodeType(args[0], \"url\").url;\n\n if (!parser.settings.isTrusted({\n command: \"\\\\href\",\n url: href\n })) {\n return parser.formatUnsupportedCmd(\"\\\\href\");\n }\n\n return {\n type: \"href\",\n mode: parser.mode,\n href,\n body: ordargument(body)\n };\n },\n htmlBuilder: (group, options) => {\n const elements = buildExpression(group.body, options, false);\n return buildCommon.makeAnchor(group.href, [], elements, options);\n },\n mathmlBuilder: (group, options) => {\n let math = buildExpressionRow(group.body, options);\n\n if (!(math instanceof MathNode)) {\n math = new MathNode(\"mrow\", [math]);\n }\n\n math.setAttribute(\"href\", group.href);\n return math;\n }\n});\ndefineFunction({\n type: \"href\",\n names: [\"\\\\url\"],\n props: {\n numArgs: 1,\n argTypes: [\"url\"],\n allowedInText: true\n },\n handler: (_ref2, args) => {\n let {\n parser\n } = _ref2;\n const href = assertNodeType(args[0], \"url\").url;\n\n if (!parser.settings.isTrusted({\n command: \"\\\\url\",\n url: href\n })) {\n return parser.formatUnsupportedCmd(\"\\\\url\");\n }\n\n const chars = [];\n\n for (let i = 0; i < href.length; i++) {\n let c = href[i];\n\n if (c === \"~\") {\n c = \"\\\\textasciitilde\";\n }\n\n chars.push({\n type: \"textord\",\n mode: \"text\",\n text: c\n });\n }\n\n const body = {\n type: \"text\",\n mode: parser.mode,\n font: \"\\\\texttt\",\n body: chars\n };\n return {\n type: \"href\",\n mode: parser.mode,\n href,\n body: ordargument(body)\n };\n }\n});\n;// CONCATENATED MODULE: ./src/functions/hbox.js\n\n\n\n\n // \\hbox is provided for compatibility with LaTeX \\vcenter.\n// In LaTeX, \\vcenter can act only on a box, as in\n// \\vcenter{\\hbox{$\\frac{a+b}{\\dfrac{c}{d}}$}}\n// This function by itself doesn't do anything but prevent a soft line break.\n\ndefineFunction({\n type: \"hbox\",\n names: [\"\\\\hbox\"],\n props: {\n numArgs: 1,\n argTypes: [\"text\"],\n allowedInText: true,\n primitive: true\n },\n\n handler(_ref, args) {\n let {\n parser\n } = _ref;\n return {\n type: \"hbox\",\n mode: parser.mode,\n body: ordargument(args[0])\n };\n },\n\n htmlBuilder(group, options) {\n const elements = buildExpression(group.body, options, false);\n return buildCommon.makeFragment(elements);\n },\n\n mathmlBuilder(group, options) {\n return new mathMLTree.MathNode(\"mrow\", buildMathML_buildExpression(group.body, options));\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/html.js\n\n\n\n\n\n\ndefineFunction({\n type: \"html\",\n names: [\"\\\\htmlClass\", \"\\\\htmlId\", \"\\\\htmlStyle\", \"\\\\htmlData\"],\n props: {\n numArgs: 2,\n argTypes: [\"raw\", \"original\"],\n allowedInText: true\n },\n handler: (_ref, args) => {\n let {\n parser,\n funcName,\n token\n } = _ref;\n const value = assertNodeType(args[0], \"raw\").string;\n const body = args[1];\n\n if (parser.settings.strict) {\n parser.settings.reportNonstrict(\"htmlExtension\", \"HTML extension is disabled on strict mode\");\n }\n\n let trustContext;\n const attributes = {};\n\n switch (funcName) {\n case \"\\\\htmlClass\":\n attributes.class = value;\n trustContext = {\n command: \"\\\\htmlClass\",\n class: value\n };\n break;\n\n case \"\\\\htmlId\":\n attributes.id = value;\n trustContext = {\n command: \"\\\\htmlId\",\n id: value\n };\n break;\n\n case \"\\\\htmlStyle\":\n attributes.style = value;\n trustContext = {\n command: \"\\\\htmlStyle\",\n style: value\n };\n break;\n\n case \"\\\\htmlData\":\n {\n const data = value.split(\",\");\n\n for (let i = 0; i < data.length; i++) {\n const keyVal = data[i].split(\"=\");\n\n if (keyVal.length !== 2) {\n throw new src_ParseError(\"Error parsing key-value for \\\\htmlData\");\n }\n\n attributes[\"data-\" + keyVal[0].trim()] = keyVal[1].trim();\n }\n\n trustContext = {\n command: \"\\\\htmlData\",\n attributes\n };\n break;\n }\n\n default:\n throw new Error(\"Unrecognized html command\");\n }\n\n if (!parser.settings.isTrusted(trustContext)) {\n return parser.formatUnsupportedCmd(funcName);\n }\n\n return {\n type: \"html\",\n mode: parser.mode,\n attributes,\n body: ordargument(body)\n };\n },\n htmlBuilder: (group, options) => {\n const elements = buildExpression(group.body, options, false);\n const classes = [\"enclosing\"];\n\n if (group.attributes.class) {\n classes.push(...group.attributes.class.trim().split(/\\s+/));\n }\n\n const span = buildCommon.makeSpan(classes, elements, options);\n\n for (const attr in group.attributes) {\n if (attr !== \"class\" && group.attributes.hasOwnProperty(attr)) {\n span.setAttribute(attr, group.attributes[attr]);\n }\n }\n\n return span;\n },\n mathmlBuilder: (group, options) => {\n return buildExpressionRow(group.body, options);\n }\n});\n;// CONCATENATED MODULE: ./src/functions/htmlmathml.js\n\n\n\n\ndefineFunction({\n type: \"htmlmathml\",\n names: [\"\\\\html@mathml\"],\n props: {\n numArgs: 2,\n allowedInText: true\n },\n handler: (_ref, args) => {\n let {\n parser\n } = _ref;\n return {\n type: \"htmlmathml\",\n mode: parser.mode,\n html: ordargument(args[0]),\n mathml: ordargument(args[1])\n };\n },\n htmlBuilder: (group, options) => {\n const elements = buildExpression(group.html, options, false);\n return buildCommon.makeFragment(elements);\n },\n mathmlBuilder: (group, options) => {\n return buildExpressionRow(group.mathml, options);\n }\n});\n;// CONCATENATED MODULE: ./src/functions/includegraphics.js\n\n\n\n\n\n\n\nconst sizeData = function (str) {\n if (/^[-+]? *(\\d+(\\.\\d*)?|\\.\\d+)$/.test(str)) {\n // str is a number with no unit specified.\n // default unit is bp, per graphix package.\n return {\n number: +str,\n unit: \"bp\"\n };\n } else {\n const match = /([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(str);\n\n if (!match) {\n throw new src_ParseError(\"Invalid size: '\" + str + \"' in \\\\includegraphics\");\n }\n\n const data = {\n number: +(match[1] + match[2]),\n // sign + magnitude, cast to number\n unit: match[3]\n };\n\n if (!validUnit(data)) {\n throw new src_ParseError(\"Invalid unit: '\" + data.unit + \"' in \\\\includegraphics.\");\n }\n\n return data;\n }\n};\n\ndefineFunction({\n type: \"includegraphics\",\n names: [\"\\\\includegraphics\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1,\n argTypes: [\"raw\", \"url\"],\n allowedInText: false\n },\n handler: (_ref, args, optArgs) => {\n let {\n parser\n } = _ref;\n let width = {\n number: 0,\n unit: \"em\"\n };\n let height = {\n number: 0.9,\n unit: \"em\"\n }; // sorta character sized.\n\n let totalheight = {\n number: 0,\n unit: \"em\"\n };\n let alt = \"\";\n\n if (optArgs[0]) {\n const attributeStr = assertNodeType(optArgs[0], \"raw\").string; // Parser.js does not parse key/value pairs. We get a string.\n\n const attributes = attributeStr.split(\",\");\n\n for (let i = 0; i < attributes.length; i++) {\n const keyVal = attributes[i].split(\"=\");\n\n if (keyVal.length === 2) {\n const str = keyVal[1].trim();\n\n switch (keyVal[0].trim()) {\n case \"alt\":\n alt = str;\n break;\n\n case \"width\":\n width = sizeData(str);\n break;\n\n case \"height\":\n height = sizeData(str);\n break;\n\n case \"totalheight\":\n totalheight = sizeData(str);\n break;\n\n default:\n throw new src_ParseError(\"Invalid key: '\" + keyVal[0] + \"' in \\\\includegraphics.\");\n }\n }\n }\n }\n\n const src = assertNodeType(args[0], \"url\").url;\n\n if (alt === \"\") {\n // No alt given. Use the file name. Strip away the path.\n alt = src;\n alt = alt.replace(/^.*[\\\\/]/, '');\n alt = alt.substring(0, alt.lastIndexOf('.'));\n }\n\n if (!parser.settings.isTrusted({\n command: \"\\\\includegraphics\",\n url: src\n })) {\n return parser.formatUnsupportedCmd(\"\\\\includegraphics\");\n }\n\n return {\n type: \"includegraphics\",\n mode: parser.mode,\n alt: alt,\n width: width,\n height: height,\n totalheight: totalheight,\n src: src\n };\n },\n htmlBuilder: (group, options) => {\n const height = calculateSize(group.height, options);\n let depth = 0;\n\n if (group.totalheight.number > 0) {\n depth = calculateSize(group.totalheight, options) - height;\n }\n\n let width = 0;\n\n if (group.width.number > 0) {\n width = calculateSize(group.width, options);\n }\n\n const style = {\n height: makeEm(height + depth)\n };\n\n if (width > 0) {\n style.width = makeEm(width);\n }\n\n if (depth > 0) {\n style.verticalAlign = makeEm(-depth);\n }\n\n const node = new Img(group.src, group.alt, style);\n node.height = height;\n node.depth = depth;\n return node;\n },\n mathmlBuilder: (group, options) => {\n const node = new mathMLTree.MathNode(\"mglyph\", []);\n node.setAttribute(\"alt\", group.alt);\n const height = calculateSize(group.height, options);\n let depth = 0;\n\n if (group.totalheight.number > 0) {\n depth = calculateSize(group.totalheight, options) - height;\n node.setAttribute(\"valign\", makeEm(-depth));\n }\n\n node.setAttribute(\"height\", makeEm(height + depth));\n\n if (group.width.number > 0) {\n const width = calculateSize(group.width, options);\n node.setAttribute(\"width\", makeEm(width));\n }\n\n node.setAttribute(\"src\", group.src);\n return node;\n }\n});\n;// CONCATENATED MODULE: ./src/functions/kern.js\n// Horizontal spacing commands\n\n\n\n\n // TODO: \\hskip and \\mskip should support plus and minus in lengths\n\ndefineFunction({\n type: \"kern\",\n names: [\"\\\\kern\", \"\\\\mkern\", \"\\\\hskip\", \"\\\\mskip\"],\n props: {\n numArgs: 1,\n argTypes: [\"size\"],\n primitive: true,\n allowedInText: true\n },\n\n handler(_ref, args) {\n let {\n parser,\n funcName\n } = _ref;\n const size = assertNodeType(args[0], \"size\");\n\n if (parser.settings.strict) {\n const mathFunction = funcName[1] === 'm'; // \\mkern, \\mskip\n\n const muUnit = size.value.unit === 'mu';\n\n if (mathFunction) {\n if (!muUnit) {\n parser.settings.reportNonstrict(\"mathVsTextUnits\", \"LaTeX's \" + funcName + \" supports only mu units, \" + (\"not \" + size.value.unit + \" units\"));\n }\n\n if (parser.mode !== \"math\") {\n parser.settings.reportNonstrict(\"mathVsTextUnits\", \"LaTeX's \" + funcName + \" works only in math mode\");\n }\n } else {\n // !mathFunction\n if (muUnit) {\n parser.settings.reportNonstrict(\"mathVsTextUnits\", \"LaTeX's \" + funcName + \" doesn't support mu units\");\n }\n }\n }\n\n return {\n type: \"kern\",\n mode: parser.mode,\n dimension: size.value\n };\n },\n\n htmlBuilder(group, options) {\n return buildCommon.makeGlue(group.dimension, options);\n },\n\n mathmlBuilder(group, options) {\n const dimension = calculateSize(group.dimension, options);\n return new mathMLTree.SpaceNode(dimension);\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/lap.js\n// Horizontal overlap functions\n\n\n\n\n\n\ndefineFunction({\n type: \"lap\",\n names: [\"\\\\mathllap\", \"\\\\mathrlap\", \"\\\\mathclap\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler: (_ref, args) => {\n let {\n parser,\n funcName\n } = _ref;\n const body = args[0];\n return {\n type: \"lap\",\n mode: parser.mode,\n alignment: funcName.slice(5),\n body\n };\n },\n htmlBuilder: (group, options) => {\n // mathllap, mathrlap, mathclap\n let inner;\n\n if (group.alignment === \"clap\") {\n // ref: https://www.math.lsu.edu/~aperlis/publications/mathclap/\n inner = buildCommon.makeSpan([], [buildGroup(group.body, options)]); // wrap, since CSS will center a .clap > .inner > span\n\n inner = buildCommon.makeSpan([\"inner\"], [inner], options);\n } else {\n inner = buildCommon.makeSpan([\"inner\"], [buildGroup(group.body, options)]);\n }\n\n const fix = buildCommon.makeSpan([\"fix\"], []);\n let node = buildCommon.makeSpan([group.alignment], [inner, fix], options); // At this point, we have correctly set horizontal alignment of the\n // two items involved in the lap.\n // Next, use a strut to set the height of the HTML bounding box.\n // Otherwise, a tall argument may be misplaced.\n // This code resolved issue #1153\n\n const strut = buildCommon.makeSpan([\"strut\"]);\n strut.style.height = makeEm(node.height + node.depth);\n\n if (node.depth) {\n strut.style.verticalAlign = makeEm(-node.depth);\n }\n\n node.children.unshift(strut); // Next, prevent vertical misplacement when next to something tall.\n // This code resolves issue #1234\n\n node = buildCommon.makeSpan([\"thinbox\"], [node], options);\n return buildCommon.makeSpan([\"mord\", \"vbox\"], [node], options);\n },\n mathmlBuilder: (group, options) => {\n // mathllap, mathrlap, mathclap\n const node = new mathMLTree.MathNode(\"mpadded\", [buildMathML_buildGroup(group.body, options)]);\n\n if (group.alignment !== \"rlap\") {\n const offset = group.alignment === \"llap\" ? \"-1\" : \"-0.5\";\n node.setAttribute(\"lspace\", offset + \"width\");\n }\n\n node.setAttribute(\"width\", \"0px\");\n return node;\n }\n});\n;// CONCATENATED MODULE: ./src/functions/math.js\n\n // Switching from text mode back to math mode\n\ndefineFunction({\n type: \"styling\",\n names: [\"\\\\(\", \"$\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n allowedInMath: false\n },\n\n handler(_ref, args) {\n let {\n funcName,\n parser\n } = _ref;\n const outerMode = parser.mode;\n parser.switchMode(\"math\");\n const close = funcName === \"\\\\(\" ? \"\\\\)\" : \"$\";\n const body = parser.parseExpression(false, close);\n parser.expect(close);\n parser.switchMode(outerMode);\n return {\n type: \"styling\",\n mode: parser.mode,\n style: \"text\",\n body\n };\n }\n\n}); // Check for extra closing math delimiters\n\ndefineFunction({\n type: \"text\",\n // Doesn't matter what this is.\n names: [\"\\\\)\", \"\\\\]\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n allowedInMath: false\n },\n\n handler(context, args) {\n throw new src_ParseError(\"Mismatched \" + context.funcName);\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/mathchoice.js\n\n\n\n\n\n\nconst chooseMathStyle = (group, options) => {\n switch (options.style.size) {\n case src_Style.DISPLAY.size:\n return group.display;\n\n case src_Style.TEXT.size:\n return group.text;\n\n case src_Style.SCRIPT.size:\n return group.script;\n\n case src_Style.SCRIPTSCRIPT.size:\n return group.scriptscript;\n\n default:\n return group.text;\n }\n};\n\ndefineFunction({\n type: \"mathchoice\",\n names: [\"\\\\mathchoice\"],\n props: {\n numArgs: 4,\n primitive: true\n },\n handler: (_ref, args) => {\n let {\n parser\n } = _ref;\n return {\n type: \"mathchoice\",\n mode: parser.mode,\n display: ordargument(args[0]),\n text: ordargument(args[1]),\n script: ordargument(args[2]),\n scriptscript: ordargument(args[3])\n };\n },\n htmlBuilder: (group, options) => {\n const body = chooseMathStyle(group, options);\n const elements = buildExpression(body, options, false);\n return buildCommon.makeFragment(elements);\n },\n mathmlBuilder: (group, options) => {\n const body = chooseMathStyle(group, options);\n return buildExpressionRow(body, options);\n }\n});\n;// CONCATENATED MODULE: ./src/functions/utils/assembleSupSub.js\n\n\n\n // For an operator with limits, assemble the base, sup, and sub into a span.\n\nconst assembleSupSub = (base, supGroup, subGroup, options, style, slant, baseShift) => {\n base = buildCommon.makeSpan([], [base]);\n const subIsSingleCharacter = subGroup && utils.isCharacterBox(subGroup);\n let sub;\n let sup; // We manually have to handle the superscripts and subscripts. This,\n // aside from the kern calculations, is copied from supsub.\n\n if (supGroup) {\n const elem = buildGroup(supGroup, options.havingStyle(style.sup()), options);\n sup = {\n elem,\n kern: Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - elem.depth)\n };\n }\n\n if (subGroup) {\n const elem = buildGroup(subGroup, options.havingStyle(style.sub()), options);\n sub = {\n elem,\n kern: Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - elem.height)\n };\n } // Build the final group as a vlist of the possible subscript, base,\n // and possible superscript.\n\n\n let finalGroup;\n\n if (sup && sub) {\n const bottom = options.fontMetrics().bigOpSpacing5 + sub.elem.height + sub.elem.depth + sub.kern + base.depth + baseShift;\n finalGroup = buildCommon.makeVList({\n positionType: \"bottom\",\n positionData: bottom,\n children: [{\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }, {\n type: \"elem\",\n elem: sub.elem,\n marginLeft: makeEm(-slant)\n }, {\n type: \"kern\",\n size: sub.kern\n }, {\n type: \"elem\",\n elem: base\n }, {\n type: \"kern\",\n size: sup.kern\n }, {\n type: \"elem\",\n elem: sup.elem,\n marginLeft: makeEm(slant)\n }, {\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }]\n }, options);\n } else if (sub) {\n const top = base.height - baseShift; // Shift the limits by the slant of the symbol. Note\n // that we are supposed to shift the limits by 1/2 of the slant,\n // but since we are centering the limits adding a full slant of\n // margin will shift by 1/2 that.\n\n finalGroup = buildCommon.makeVList({\n positionType: \"top\",\n positionData: top,\n children: [{\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }, {\n type: \"elem\",\n elem: sub.elem,\n marginLeft: makeEm(-slant)\n }, {\n type: \"kern\",\n size: sub.kern\n }, {\n type: \"elem\",\n elem: base\n }]\n }, options);\n } else if (sup) {\n const bottom = base.depth + baseShift;\n finalGroup = buildCommon.makeVList({\n positionType: \"bottom\",\n positionData: bottom,\n children: [{\n type: \"elem\",\n elem: base\n }, {\n type: \"kern\",\n size: sup.kern\n }, {\n type: \"elem\",\n elem: sup.elem,\n marginLeft: makeEm(slant)\n }, {\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }]\n }, options);\n } else {\n // This case probably shouldn't occur (this would mean the\n // supsub was sending us a group with no superscript or\n // subscript) but be safe.\n return base;\n }\n\n const parts = [finalGroup];\n\n if (sub && slant !== 0 && !subIsSingleCharacter) {\n // A negative margin-left was applied to the lower limit.\n // Avoid an overlap by placing a spacer on the left on the group.\n const spacer = buildCommon.makeSpan([\"mspace\"], [], options);\n spacer.style.marginRight = makeEm(slant);\n parts.unshift(spacer);\n }\n\n return buildCommon.makeSpan([\"mop\", \"op-limits\"], parts, options);\n};\n;// CONCATENATED MODULE: ./src/functions/op.js\n// Limits, symbols\n\n\n\n\n\n\n\n\n\n\n\n// Most operators have a large successor symbol, but these don't.\nconst noSuccessor = [\"\\\\smallint\"]; // NOTE: Unlike most `htmlBuilder`s, this one handles not only \"op\", but also\n// \"supsub\" since some of them (like \\int) can affect super/subscripting.\n\nconst op_htmlBuilder = (grp, options) => {\n // Operators are handled in the TeXbook pg. 443-444, rule 13(a).\n let supGroup;\n let subGroup;\n let hasLimits = false;\n let group;\n\n if (grp.type === \"supsub\") {\n // If we have limits, supsub will pass us its group to handle. Pull\n // out the superscript and subscript and set the group to the op in\n // its base.\n supGroup = grp.sup;\n subGroup = grp.sub;\n group = assertNodeType(grp.base, \"op\");\n hasLimits = true;\n } else {\n group = assertNodeType(grp, \"op\");\n }\n\n const style = options.style;\n let large = false;\n\n if (style.size === src_Style.DISPLAY.size && group.symbol && !utils.contains(noSuccessor, group.name)) {\n // Most symbol operators get larger in displaystyle (rule 13)\n large = true;\n }\n\n let base;\n\n if (group.symbol) {\n // If this is a symbol, create the symbol.\n const fontName = large ? \"Size2-Regular\" : \"Size1-Regular\";\n let stash = \"\";\n\n if (group.name === \"\\\\oiint\" || group.name === \"\\\\oiiint\") {\n // No font glyphs yet, so use a glyph w/o the oval.\n // TODO: When font glyphs are available, delete this code.\n stash = group.name.slice(1);\n group.name = stash === \"oiint\" ? \"\\\\iint\" : \"\\\\iiint\";\n }\n\n base = buildCommon.makeSymbol(group.name, fontName, \"math\", options, [\"mop\", \"op-symbol\", large ? \"large-op\" : \"small-op\"]);\n\n if (stash.length > 0) {\n // We're in \\oiint or \\oiiint. Overlay the oval.\n // TODO: When font glyphs are available, delete this code.\n const italic = base.italic;\n const oval = buildCommon.staticSvg(stash + \"Size\" + (large ? \"2\" : \"1\"), options);\n base = buildCommon.makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: base,\n shift: 0\n }, {\n type: \"elem\",\n elem: oval,\n shift: large ? 0.08 : 0\n }]\n }, options);\n group.name = \"\\\\\" + stash;\n base.classes.unshift(\"mop\"); // $FlowFixMe\n\n base.italic = italic;\n }\n } else if (group.body) {\n // If this is a list, compose that list.\n const inner = buildExpression(group.body, options, true);\n\n if (inner.length === 1 && inner[0] instanceof SymbolNode) {\n base = inner[0];\n base.classes[0] = \"mop\"; // replace old mclass\n } else {\n base = buildCommon.makeSpan([\"mop\"], inner, options);\n }\n } else {\n // Otherwise, this is a text operator. Build the text from the\n // operator's name.\n const output = [];\n\n for (let i = 1; i < group.name.length; i++) {\n output.push(buildCommon.mathsym(group.name[i], group.mode, options));\n }\n\n base = buildCommon.makeSpan([\"mop\"], output, options);\n } // If content of op is a single symbol, shift it vertically.\n\n\n let baseShift = 0;\n let slant = 0;\n\n if ((base instanceof SymbolNode || group.name === \"\\\\oiint\" || group.name === \"\\\\oiiint\") && !group.suppressBaseShift) {\n // We suppress the shift of the base of \\overset and \\underset. Otherwise,\n // shift the symbol so its center lies on the axis (rule 13). It\n // appears that our fonts have the centers of the symbols already\n // almost on the axis, so these numbers are very small. Note we\n // don't actually apply this here, but instead it is used either in\n // the vlist creation or separately when there are no limits.\n baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight; // The slant of the symbol is just its italic correction.\n // $FlowFixMe\n\n slant = base.italic;\n }\n\n if (hasLimits) {\n return assembleSupSub(base, supGroup, subGroup, options, style, slant, baseShift);\n } else {\n if (baseShift) {\n base.style.position = \"relative\";\n base.style.top = makeEm(baseShift);\n }\n\n return base;\n }\n};\n\nconst op_mathmlBuilder = (group, options) => {\n let node;\n\n if (group.symbol) {\n // This is a symbol. Just add the symbol.\n node = new MathNode(\"mo\", [makeText(group.name, group.mode)]);\n\n if (utils.contains(noSuccessor, group.name)) {\n node.setAttribute(\"largeop\", \"false\");\n }\n } else if (group.body) {\n // This is an operator with children. Add them.\n node = new MathNode(\"mo\", buildMathML_buildExpression(group.body, options));\n } else {\n // This is a text operator. Add all of the characters from the\n // operator's name.\n node = new MathNode(\"mi\", [new TextNode(group.name.slice(1))]); // Append an .\n // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4\n\n const operator = new MathNode(\"mo\", [makeText(\"\\u2061\", \"text\")]);\n\n if (group.parentIsSupSub) {\n node = new MathNode(\"mrow\", [node, operator]);\n } else {\n node = newDocumentFragment([node, operator]);\n }\n }\n\n return node;\n};\n\nconst singleCharBigOps = {\n \"\\u220F\": \"\\\\prod\",\n \"\\u2210\": \"\\\\coprod\",\n \"\\u2211\": \"\\\\sum\",\n \"\\u22c0\": \"\\\\bigwedge\",\n \"\\u22c1\": \"\\\\bigvee\",\n \"\\u22c2\": \"\\\\bigcap\",\n \"\\u22c3\": \"\\\\bigcup\",\n \"\\u2a00\": \"\\\\bigodot\",\n \"\\u2a01\": \"\\\\bigoplus\",\n \"\\u2a02\": \"\\\\bigotimes\",\n \"\\u2a04\": \"\\\\biguplus\",\n \"\\u2a06\": \"\\\\bigsqcup\"\n};\ndefineFunction({\n type: \"op\",\n names: [\"\\\\coprod\", \"\\\\bigvee\", \"\\\\bigwedge\", \"\\\\biguplus\", \"\\\\bigcap\", \"\\\\bigcup\", \"\\\\intop\", \"\\\\prod\", \"\\\\sum\", \"\\\\bigotimes\", \"\\\\bigoplus\", \"\\\\bigodot\", \"\\\\bigsqcup\", \"\\\\smallint\", \"\\u220F\", \"\\u2210\", \"\\u2211\", \"\\u22c0\", \"\\u22c1\", \"\\u22c2\", \"\\u22c3\", \"\\u2a00\", \"\\u2a01\", \"\\u2a02\", \"\\u2a04\", \"\\u2a06\"],\n props: {\n numArgs: 0\n },\n handler: (_ref, args) => {\n let {\n parser,\n funcName\n } = _ref;\n let fName = funcName;\n\n if (fName.length === 1) {\n fName = singleCharBigOps[fName];\n }\n\n return {\n type: \"op\",\n mode: parser.mode,\n limits: true,\n parentIsSupSub: false,\n symbol: true,\n name: fName\n };\n },\n htmlBuilder: op_htmlBuilder,\n mathmlBuilder: op_mathmlBuilder\n}); // Note: calling defineFunction with a type that's already been defined only\n// works because the same htmlBuilder and mathmlBuilder are being used.\n\ndefineFunction({\n type: \"op\",\n names: [\"\\\\mathop\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (_ref2, args) => {\n let {\n parser\n } = _ref2;\n const body = args[0];\n return {\n type: \"op\",\n mode: parser.mode,\n limits: false,\n parentIsSupSub: false,\n symbol: false,\n body: ordargument(body)\n };\n },\n htmlBuilder: op_htmlBuilder,\n mathmlBuilder: op_mathmlBuilder\n}); // There are 2 flags for operators; whether they produce limits in\n// displaystyle, and whether they are symbols and should grow in\n// displaystyle. These four groups cover the four possible choices.\n\nconst singleCharIntegrals = {\n \"\\u222b\": \"\\\\int\",\n \"\\u222c\": \"\\\\iint\",\n \"\\u222d\": \"\\\\iiint\",\n \"\\u222e\": \"\\\\oint\",\n \"\\u222f\": \"\\\\oiint\",\n \"\\u2230\": \"\\\\oiiint\"\n}; // No limits, not symbols\n\ndefineFunction({\n type: \"op\",\n names: [\"\\\\arcsin\", \"\\\\arccos\", \"\\\\arctan\", \"\\\\arctg\", \"\\\\arcctg\", \"\\\\arg\", \"\\\\ch\", \"\\\\cos\", \"\\\\cosec\", \"\\\\cosh\", \"\\\\cot\", \"\\\\cotg\", \"\\\\coth\", \"\\\\csc\", \"\\\\ctg\", \"\\\\cth\", \"\\\\deg\", \"\\\\dim\", \"\\\\exp\", \"\\\\hom\", \"\\\\ker\", \"\\\\lg\", \"\\\\ln\", \"\\\\log\", \"\\\\sec\", \"\\\\sin\", \"\\\\sinh\", \"\\\\sh\", \"\\\\tan\", \"\\\\tanh\", \"\\\\tg\", \"\\\\th\"],\n props: {\n numArgs: 0\n },\n\n handler(_ref3) {\n let {\n parser,\n funcName\n } = _ref3;\n return {\n type: \"op\",\n mode: parser.mode,\n limits: false,\n parentIsSupSub: false,\n symbol: false,\n name: funcName\n };\n },\n\n htmlBuilder: op_htmlBuilder,\n mathmlBuilder: op_mathmlBuilder\n}); // Limits, not symbols\n\ndefineFunction({\n type: \"op\",\n names: [\"\\\\det\", \"\\\\gcd\", \"\\\\inf\", \"\\\\lim\", \"\\\\max\", \"\\\\min\", \"\\\\Pr\", \"\\\\sup\"],\n props: {\n numArgs: 0\n },\n\n handler(_ref4) {\n let {\n parser,\n funcName\n } = _ref4;\n return {\n type: \"op\",\n mode: parser.mode,\n limits: true,\n parentIsSupSub: false,\n symbol: false,\n name: funcName\n };\n },\n\n htmlBuilder: op_htmlBuilder,\n mathmlBuilder: op_mathmlBuilder\n}); // No limits, symbols\n\ndefineFunction({\n type: \"op\",\n names: [\"\\\\int\", \"\\\\iint\", \"\\\\iiint\", \"\\\\oint\", \"\\\\oiint\", \"\\\\oiiint\", \"\\u222b\", \"\\u222c\", \"\\u222d\", \"\\u222e\", \"\\u222f\", \"\\u2230\"],\n props: {\n numArgs: 0\n },\n\n handler(_ref5) {\n let {\n parser,\n funcName\n } = _ref5;\n let fName = funcName;\n\n if (fName.length === 1) {\n fName = singleCharIntegrals[fName];\n }\n\n return {\n type: \"op\",\n mode: parser.mode,\n limits: false,\n parentIsSupSub: false,\n symbol: true,\n name: fName\n };\n },\n\n htmlBuilder: op_htmlBuilder,\n mathmlBuilder: op_mathmlBuilder\n});\n;// CONCATENATED MODULE: ./src/functions/operatorname.js\n\n\n\n\n\n\n\n\n\n// NOTE: Unlike most `htmlBuilder`s, this one handles not only\n// \"operatorname\", but also \"supsub\" since \\operatorname* can\n// affect super/subscripting.\nconst operatorname_htmlBuilder = (grp, options) => {\n // Operators are handled in the TeXbook pg. 443-444, rule 13(a).\n let supGroup;\n let subGroup;\n let hasLimits = false;\n let group;\n\n if (grp.type === \"supsub\") {\n // If we have limits, supsub will pass us its group to handle. Pull\n // out the superscript and subscript and set the group to the op in\n // its base.\n supGroup = grp.sup;\n subGroup = grp.sub;\n group = assertNodeType(grp.base, \"operatorname\");\n hasLimits = true;\n } else {\n group = assertNodeType(grp, \"operatorname\");\n }\n\n let base;\n\n if (group.body.length > 0) {\n const body = group.body.map(child => {\n // $FlowFixMe: Check if the node has a string `text` property.\n const childText = child.text;\n\n if (typeof childText === \"string\") {\n return {\n type: \"textord\",\n mode: child.mode,\n text: childText\n };\n } else {\n return child;\n }\n }); // Consolidate function names into symbol characters.\n\n const expression = buildExpression(body, options.withFont(\"mathrm\"), true);\n\n for (let i = 0; i < expression.length; i++) {\n const child = expression[i];\n\n if (child instanceof SymbolNode) {\n // Per amsopn package,\n // change minus to hyphen and \\ast to asterisk\n child.text = child.text.replace(/\\u2212/, \"-\").replace(/\\u2217/, \"*\");\n }\n }\n\n base = buildCommon.makeSpan([\"mop\"], expression, options);\n } else {\n base = buildCommon.makeSpan([\"mop\"], [], options);\n }\n\n if (hasLimits) {\n return assembleSupSub(base, supGroup, subGroup, options, options.style, 0, 0);\n } else {\n return base;\n }\n};\n\nconst operatorname_mathmlBuilder = (group, options) => {\n // The steps taken here are similar to the html version.\n let expression = buildMathML_buildExpression(group.body, options.withFont(\"mathrm\")); // Is expression a string or has it something like a fraction?\n\n let isAllString = true; // default\n\n for (let i = 0; i < expression.length; i++) {\n const node = expression[i];\n\n if (node instanceof mathMLTree.SpaceNode) {// Do nothing\n } else if (node instanceof mathMLTree.MathNode) {\n switch (node.type) {\n case \"mi\":\n case \"mn\":\n case \"ms\":\n case \"mspace\":\n case \"mtext\":\n break;\n // Do nothing yet.\n\n case \"mo\":\n {\n const child = node.children[0];\n\n if (node.children.length === 1 && child instanceof mathMLTree.TextNode) {\n child.text = child.text.replace(/\\u2212/, \"-\").replace(/\\u2217/, \"*\");\n } else {\n isAllString = false;\n }\n\n break;\n }\n\n default:\n isAllString = false;\n }\n } else {\n isAllString = false;\n }\n }\n\n if (isAllString) {\n // Write a single TextNode instead of multiple nested tags.\n const word = expression.map(node => node.toText()).join(\"\");\n expression = [new mathMLTree.TextNode(word)];\n }\n\n const identifier = new mathMLTree.MathNode(\"mi\", expression);\n identifier.setAttribute(\"mathvariant\", \"normal\"); // \\u2061 is the same as ⁡\n // ref: https://www.w3schools.com/charsets/ref_html_entities_a.asp\n\n const operator = new mathMLTree.MathNode(\"mo\", [makeText(\"\\u2061\", \"text\")]);\n\n if (group.parentIsSupSub) {\n return new mathMLTree.MathNode(\"mrow\", [identifier, operator]);\n } else {\n return mathMLTree.newDocumentFragment([identifier, operator]);\n }\n}; // \\operatorname\n// amsopn.dtx: \\mathop{#1\\kern\\z@\\operator@font#3}\\newmcodes@\n\n\ndefineFunction({\n type: \"operatorname\",\n names: [\"\\\\operatorname@\", \"\\\\operatornamewithlimits\"],\n props: {\n numArgs: 1\n },\n handler: (_ref, args) => {\n let {\n parser,\n funcName\n } = _ref;\n const body = args[0];\n return {\n type: \"operatorname\",\n mode: parser.mode,\n body: ordargument(body),\n alwaysHandleSupSub: funcName === \"\\\\operatornamewithlimits\",\n limits: false,\n parentIsSupSub: false\n };\n },\n htmlBuilder: operatorname_htmlBuilder,\n mathmlBuilder: operatorname_mathmlBuilder\n});\ndefineMacro(\"\\\\operatorname\", \"\\\\@ifstar\\\\operatornamewithlimits\\\\operatorname@\");\n;// CONCATENATED MODULE: ./src/functions/ordgroup.js\n\n\n\n\ndefineFunctionBuilders({\n type: \"ordgroup\",\n\n htmlBuilder(group, options) {\n if (group.semisimple) {\n return buildCommon.makeFragment(buildExpression(group.body, options, false));\n }\n\n return buildCommon.makeSpan([\"mord\"], buildExpression(group.body, options, true), options);\n },\n\n mathmlBuilder(group, options) {\n return buildExpressionRow(group.body, options, true);\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/overline.js\n\n\n\n\n\ndefineFunction({\n type: \"overline\",\n names: [\"\\\\overline\"],\n props: {\n numArgs: 1\n },\n\n handler(_ref, args) {\n let {\n parser\n } = _ref;\n const body = args[0];\n return {\n type: \"overline\",\n mode: parser.mode,\n body\n };\n },\n\n htmlBuilder(group, options) {\n // Overlines are handled in the TeXbook pg 443, Rule 9.\n // Build the inner group in the cramped style.\n const innerGroup = buildGroup(group.body, options.havingCrampedStyle()); // Create the line above the body\n\n const line = buildCommon.makeLineSpan(\"overline-line\", options); // Generate the vlist, with the appropriate kerns\n\n const defaultRuleThickness = options.fontMetrics().defaultRuleThickness;\n const vlist = buildCommon.makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: innerGroup\n }, {\n type: \"kern\",\n size: 3 * defaultRuleThickness\n }, {\n type: \"elem\",\n elem: line\n }, {\n type: \"kern\",\n size: defaultRuleThickness\n }]\n }, options);\n return buildCommon.makeSpan([\"mord\", \"overline\"], [vlist], options);\n },\n\n mathmlBuilder(group, options) {\n const operator = new mathMLTree.MathNode(\"mo\", [new mathMLTree.TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n const node = new mathMLTree.MathNode(\"mover\", [buildMathML_buildGroup(group.body, options), operator]);\n node.setAttribute(\"accent\", \"true\");\n return node;\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/phantom.js\n\n\n\n\n\ndefineFunction({\n type: \"phantom\",\n names: [\"\\\\phantom\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler: (_ref, args) => {\n let {\n parser\n } = _ref;\n const body = args[0];\n return {\n type: \"phantom\",\n mode: parser.mode,\n body: ordargument(body)\n };\n },\n htmlBuilder: (group, options) => {\n const elements = buildExpression(group.body, options.withPhantom(), false); // \\phantom isn't supposed to affect the elements it contains.\n // See \"color\" for more details.\n\n return buildCommon.makeFragment(elements);\n },\n mathmlBuilder: (group, options) => {\n const inner = buildMathML_buildExpression(group.body, options);\n return new mathMLTree.MathNode(\"mphantom\", inner);\n }\n});\ndefineFunction({\n type: \"hphantom\",\n names: [\"\\\\hphantom\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler: (_ref2, args) => {\n let {\n parser\n } = _ref2;\n const body = args[0];\n return {\n type: \"hphantom\",\n mode: parser.mode,\n body\n };\n },\n htmlBuilder: (group, options) => {\n let node = buildCommon.makeSpan([], [buildGroup(group.body, options.withPhantom())]);\n node.height = 0;\n node.depth = 0;\n\n if (node.children) {\n for (let i = 0; i < node.children.length; i++) {\n node.children[i].height = 0;\n node.children[i].depth = 0;\n }\n } // See smash for comment re: use of makeVList\n\n\n node = buildCommon.makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: node\n }]\n }, options); // For spacing, TeX treats \\smash as a math group (same spacing as ord).\n\n return buildCommon.makeSpan([\"mord\"], [node], options);\n },\n mathmlBuilder: (group, options) => {\n const inner = buildMathML_buildExpression(ordargument(group.body), options);\n const phantom = new mathMLTree.MathNode(\"mphantom\", inner);\n const node = new mathMLTree.MathNode(\"mpadded\", [phantom]);\n node.setAttribute(\"height\", \"0px\");\n node.setAttribute(\"depth\", \"0px\");\n return node;\n }\n});\ndefineFunction({\n type: \"vphantom\",\n names: [\"\\\\vphantom\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler: (_ref3, args) => {\n let {\n parser\n } = _ref3;\n const body = args[0];\n return {\n type: \"vphantom\",\n mode: parser.mode,\n body\n };\n },\n htmlBuilder: (group, options) => {\n const inner = buildCommon.makeSpan([\"inner\"], [buildGroup(group.body, options.withPhantom())]);\n const fix = buildCommon.makeSpan([\"fix\"], []);\n return buildCommon.makeSpan([\"mord\", \"rlap\"], [inner, fix], options);\n },\n mathmlBuilder: (group, options) => {\n const inner = buildMathML_buildExpression(ordargument(group.body), options);\n const phantom = new mathMLTree.MathNode(\"mphantom\", inner);\n const node = new mathMLTree.MathNode(\"mpadded\", [phantom]);\n node.setAttribute(\"width\", \"0px\");\n return node;\n }\n});\n;// CONCATENATED MODULE: ./src/functions/raisebox.js\n\n\n\n\n\n\n // Box manipulation\n\ndefineFunction({\n type: \"raisebox\",\n names: [\"\\\\raisebox\"],\n props: {\n numArgs: 2,\n argTypes: [\"size\", \"hbox\"],\n allowedInText: true\n },\n\n handler(_ref, args) {\n let {\n parser\n } = _ref;\n const amount = assertNodeType(args[0], \"size\").value;\n const body = args[1];\n return {\n type: \"raisebox\",\n mode: parser.mode,\n dy: amount,\n body\n };\n },\n\n htmlBuilder(group, options) {\n const body = buildGroup(group.body, options);\n const dy = calculateSize(group.dy, options);\n return buildCommon.makeVList({\n positionType: \"shift\",\n positionData: -dy,\n children: [{\n type: \"elem\",\n elem: body\n }]\n }, options);\n },\n\n mathmlBuilder(group, options) {\n const node = new mathMLTree.MathNode(\"mpadded\", [buildMathML_buildGroup(group.body, options)]);\n const dy = group.dy.number + group.dy.unit;\n node.setAttribute(\"voffset\", dy);\n return node;\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/relax.js\n\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\relax\"],\n props: {\n numArgs: 0,\n allowedInText: true\n },\n\n handler(_ref) {\n let {\n parser\n } = _ref;\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/rule.js\n\n\n\n\n\ndefineFunction({\n type: \"rule\",\n names: [\"\\\\rule\"],\n props: {\n numArgs: 2,\n numOptionalArgs: 1,\n argTypes: [\"size\", \"size\", \"size\"]\n },\n\n handler(_ref, args, optArgs) {\n let {\n parser\n } = _ref;\n const shift = optArgs[0];\n const width = assertNodeType(args[0], \"size\");\n const height = assertNodeType(args[1], \"size\");\n return {\n type: \"rule\",\n mode: parser.mode,\n shift: shift && assertNodeType(shift, \"size\").value,\n width: width.value,\n height: height.value\n };\n },\n\n htmlBuilder(group, options) {\n // Make an empty span for the rule\n const rule = buildCommon.makeSpan([\"mord\", \"rule\"], [], options); // Calculate the shift, width, and height of the rule, and account for units\n\n const width = calculateSize(group.width, options);\n const height = calculateSize(group.height, options);\n const shift = group.shift ? calculateSize(group.shift, options) : 0; // Style the rule to the right size\n\n rule.style.borderRightWidth = makeEm(width);\n rule.style.borderTopWidth = makeEm(height);\n rule.style.bottom = makeEm(shift); // Record the height and width\n\n rule.width = width;\n rule.height = height + shift;\n rule.depth = -shift; // Font size is the number large enough that the browser will\n // reserve at least `absHeight` space above the baseline.\n // The 1.125 factor was empirically determined\n\n rule.maxFontSize = height * 1.125 * options.sizeMultiplier;\n return rule;\n },\n\n mathmlBuilder(group, options) {\n const width = calculateSize(group.width, options);\n const height = calculateSize(group.height, options);\n const shift = group.shift ? calculateSize(group.shift, options) : 0;\n const color = options.color && options.getColor() || \"black\";\n const rule = new mathMLTree.MathNode(\"mspace\");\n rule.setAttribute(\"mathbackground\", color);\n rule.setAttribute(\"width\", makeEm(width));\n rule.setAttribute(\"height\", makeEm(height));\n const wrapper = new mathMLTree.MathNode(\"mpadded\", [rule]);\n\n if (shift >= 0) {\n wrapper.setAttribute(\"height\", makeEm(shift));\n } else {\n wrapper.setAttribute(\"height\", makeEm(shift));\n wrapper.setAttribute(\"depth\", makeEm(-shift));\n }\n\n wrapper.setAttribute(\"voffset\", makeEm(shift));\n return wrapper;\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/sizing.js\n\n\n\n\n\n\nfunction sizingGroup(value, options, baseOptions) {\n const inner = buildExpression(value, options, false);\n const multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; // Add size-resetting classes to the inner list and set maxFontSize\n // manually. Handle nested size changes.\n\n for (let i = 0; i < inner.length; i++) {\n const pos = inner[i].classes.indexOf(\"sizing\");\n\n if (pos < 0) {\n Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions));\n } else if (inner[i].classes[pos + 1] === \"reset-size\" + options.size) {\n // This is a nested size change: e.g., inner[i] is the \"b\" in\n // `\\Huge a \\small b`. Override the old size (the `reset-` class)\n // but not the new size.\n inner[i].classes[pos + 1] = \"reset-size\" + baseOptions.size;\n }\n\n inner[i].height *= multiplier;\n inner[i].depth *= multiplier;\n }\n\n return buildCommon.makeFragment(inner);\n}\nconst sizeFuncs = [\"\\\\tiny\", \"\\\\sixptsize\", \"\\\\scriptsize\", \"\\\\footnotesize\", \"\\\\small\", \"\\\\normalsize\", \"\\\\large\", \"\\\\Large\", \"\\\\LARGE\", \"\\\\huge\", \"\\\\Huge\"];\nconst sizing_htmlBuilder = (group, options) => {\n // Handle sizing operators like \\Huge. Real TeX doesn't actually allow\n // these functions inside of math expressions, so we do some special\n // handling.\n const newOptions = options.havingSize(group.size);\n return sizingGroup(group.body, newOptions, options);\n};\ndefineFunction({\n type: \"sizing\",\n names: sizeFuncs,\n props: {\n numArgs: 0,\n allowedInText: true\n },\n handler: (_ref, args) => {\n let {\n breakOnTokenText,\n funcName,\n parser\n } = _ref;\n const body = parser.parseExpression(false, breakOnTokenText);\n return {\n type: \"sizing\",\n mode: parser.mode,\n // Figure out what size to use based on the list of functions above\n size: sizeFuncs.indexOf(funcName) + 1,\n body\n };\n },\n htmlBuilder: sizing_htmlBuilder,\n mathmlBuilder: (group, options) => {\n const newOptions = options.havingSize(group.size);\n const inner = buildMathML_buildExpression(group.body, newOptions);\n const node = new mathMLTree.MathNode(\"mstyle\", inner); // TODO(emily): This doesn't produce the correct size for nested size\n // changes, because we don't keep state of what style we're currently\n // in, so we can't reset the size to normal before changing it. Now\n // that we're passing an options parameter we should be able to fix\n // this.\n\n node.setAttribute(\"mathsize\", makeEm(newOptions.sizeMultiplier));\n return node;\n }\n});\n;// CONCATENATED MODULE: ./src/functions/smash.js\n// smash, with optional [tb], as in AMS\n\n\n\n\n\n\ndefineFunction({\n type: \"smash\",\n names: [\"\\\\smash\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1,\n allowedInText: true\n },\n handler: (_ref, args, optArgs) => {\n let {\n parser\n } = _ref;\n let smashHeight = false;\n let smashDepth = false;\n const tbArg = optArgs[0] && assertNodeType(optArgs[0], \"ordgroup\");\n\n if (tbArg) {\n // Optional [tb] argument is engaged.\n // ref: amsmath: \\renewcommand{\\smash}[1][tb]{%\n // def\\mb@t{\\ht}\\def\\mb@b{\\dp}\\def\\mb@tb{\\ht\\z@\\z@\\dp}%\n let letter = \"\";\n\n for (let i = 0; i < tbArg.body.length; ++i) {\n const node = tbArg.body[i]; // $FlowFixMe: Not every node type has a `text` property.\n\n letter = node.text;\n\n if (letter === \"t\") {\n smashHeight = true;\n } else if (letter === \"b\") {\n smashDepth = true;\n } else {\n smashHeight = false;\n smashDepth = false;\n break;\n }\n }\n } else {\n smashHeight = true;\n smashDepth = true;\n }\n\n const body = args[0];\n return {\n type: \"smash\",\n mode: parser.mode,\n body,\n smashHeight,\n smashDepth\n };\n },\n htmlBuilder: (group, options) => {\n const node = buildCommon.makeSpan([], [buildGroup(group.body, options)]);\n\n if (!group.smashHeight && !group.smashDepth) {\n return node;\n }\n\n if (group.smashHeight) {\n node.height = 0; // In order to influence makeVList, we have to reset the children.\n\n if (node.children) {\n for (let i = 0; i < node.children.length; i++) {\n node.children[i].height = 0;\n }\n }\n }\n\n if (group.smashDepth) {\n node.depth = 0;\n\n if (node.children) {\n for (let i = 0; i < node.children.length; i++) {\n node.children[i].depth = 0;\n }\n }\n } // At this point, we've reset the TeX-like height and depth values.\n // But the span still has an HTML line height.\n // makeVList applies \"display: table-cell\", which prevents the browser\n // from acting on that line height. So we'll call makeVList now.\n\n\n const smashedNode = buildCommon.makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: node\n }]\n }, options); // For spacing, TeX treats \\hphantom as a math group (same spacing as ord).\n\n return buildCommon.makeSpan([\"mord\"], [smashedNode], options);\n },\n mathmlBuilder: (group, options) => {\n const node = new mathMLTree.MathNode(\"mpadded\", [buildMathML_buildGroup(group.body, options)]);\n\n if (group.smashHeight) {\n node.setAttribute(\"height\", \"0px\");\n }\n\n if (group.smashDepth) {\n node.setAttribute(\"depth\", \"0px\");\n }\n\n return node;\n }\n});\n;// CONCATENATED MODULE: ./src/functions/sqrt.js\n\n\n\n\n\n\n\n\ndefineFunction({\n type: \"sqrt\",\n names: [\"\\\\sqrt\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1\n },\n\n handler(_ref, args, optArgs) {\n let {\n parser\n } = _ref;\n const index = optArgs[0];\n const body = args[0];\n return {\n type: \"sqrt\",\n mode: parser.mode,\n body,\n index\n };\n },\n\n htmlBuilder(group, options) {\n // Square roots are handled in the TeXbook pg. 443, Rule 11.\n // First, we do the same steps as in overline to build the inner group\n // and line\n let inner = buildGroup(group.body, options.havingCrampedStyle());\n\n if (inner.height === 0) {\n // Render a small surd.\n inner.height = options.fontMetrics().xHeight;\n } // Some groups can return document fragments. Handle those by wrapping\n // them in a span.\n\n\n inner = buildCommon.wrapFragment(inner, options); // Calculate the minimum size for the \\surd delimiter\n\n const metrics = options.fontMetrics();\n const theta = metrics.defaultRuleThickness;\n let phi = theta;\n\n if (options.style.id < src_Style.TEXT.id) {\n phi = options.fontMetrics().xHeight;\n } // Calculate the clearance between the body and line\n\n\n let lineClearance = theta + phi / 4;\n const minDelimiterHeight = inner.height + inner.depth + lineClearance + theta; // Create a sqrt SVG of the required minimum size\n\n const {\n span: img,\n ruleWidth,\n advanceWidth\n } = delimiter.sqrtImage(minDelimiterHeight, options);\n const delimDepth = img.height - ruleWidth; // Adjust the clearance based on the delimiter size\n\n if (delimDepth > inner.height + inner.depth + lineClearance) {\n lineClearance = (lineClearance + delimDepth - inner.height - inner.depth) / 2;\n } // Shift the sqrt image\n\n\n const imgShift = img.height - inner.height - lineClearance - ruleWidth;\n inner.style.paddingLeft = makeEm(advanceWidth); // Overlay the image and the argument.\n\n const body = buildCommon.makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: inner,\n wrapperClasses: [\"svg-align\"]\n }, {\n type: \"kern\",\n size: -(inner.height + imgShift)\n }, {\n type: \"elem\",\n elem: img\n }, {\n type: \"kern\",\n size: ruleWidth\n }]\n }, options);\n\n if (!group.index) {\n return buildCommon.makeSpan([\"mord\", \"sqrt\"], [body], options);\n } else {\n // Handle the optional root index\n // The index is always in scriptscript style\n const newOptions = options.havingStyle(src_Style.SCRIPTSCRIPT);\n const rootm = buildGroup(group.index, newOptions, options); // The amount the index is shifted by. This is taken from the TeX\n // source, in the definition of `\\r@@t`.\n\n const toShift = 0.6 * (body.height - body.depth); // Build a VList with the superscript shifted up correctly\n\n const rootVList = buildCommon.makeVList({\n positionType: \"shift\",\n positionData: -toShift,\n children: [{\n type: \"elem\",\n elem: rootm\n }]\n }, options); // Add a class surrounding it so we can add on the appropriate\n // kerning\n\n const rootVListWrap = buildCommon.makeSpan([\"root\"], [rootVList]);\n return buildCommon.makeSpan([\"mord\", \"sqrt\"], [rootVListWrap, body], options);\n }\n },\n\n mathmlBuilder(group, options) {\n const {\n body,\n index\n } = group;\n return index ? new mathMLTree.MathNode(\"mroot\", [buildMathML_buildGroup(body, options), buildMathML_buildGroup(index, options)]) : new mathMLTree.MathNode(\"msqrt\", [buildMathML_buildGroup(body, options)]);\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/styling.js\n\n\n\n\n\nconst styling_styleMap = {\n \"display\": src_Style.DISPLAY,\n \"text\": src_Style.TEXT,\n \"script\": src_Style.SCRIPT,\n \"scriptscript\": src_Style.SCRIPTSCRIPT\n};\ndefineFunction({\n type: \"styling\",\n names: [\"\\\\displaystyle\", \"\\\\textstyle\", \"\\\\scriptstyle\", \"\\\\scriptscriptstyle\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n\n handler(_ref, args) {\n let {\n breakOnTokenText,\n funcName,\n parser\n } = _ref;\n // parse out the implicit body\n const body = parser.parseExpression(true, breakOnTokenText); // TODO: Refactor to avoid duplicating styleMap in multiple places (e.g.\n // here and in buildHTML and de-dupe the enumeration of all the styles).\n // $FlowFixMe: The names above exactly match the styles.\n\n const style = funcName.slice(1, funcName.length - 5);\n return {\n type: \"styling\",\n mode: parser.mode,\n // Figure out what style to use by pulling out the style from\n // the function name\n style,\n body\n };\n },\n\n htmlBuilder(group, options) {\n // Style changes are handled in the TeXbook on pg. 442, Rule 3.\n const newStyle = styling_styleMap[group.style];\n const newOptions = options.havingStyle(newStyle).withFont('');\n return sizingGroup(group.body, newOptions, options);\n },\n\n mathmlBuilder(group, options) {\n // Figure out what style we're changing to.\n const newStyle = styling_styleMap[group.style];\n const newOptions = options.havingStyle(newStyle);\n const inner = buildMathML_buildExpression(group.body, newOptions);\n const node = new mathMLTree.MathNode(\"mstyle\", inner);\n const styleAttributes = {\n \"display\": [\"0\", \"true\"],\n \"text\": [\"0\", \"false\"],\n \"script\": [\"1\", \"false\"],\n \"scriptscript\": [\"2\", \"false\"]\n };\n const attr = styleAttributes[group.style];\n node.setAttribute(\"scriptlevel\", attr[0]);\n node.setAttribute(\"displaystyle\", attr[1]);\n return node;\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/supsub.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Sometimes, groups perform special rules when they have superscripts or\n * subscripts attached to them. This function lets the `supsub` group know that\n * Sometimes, groups perform special rules when they have superscripts or\n * its inner element should handle the superscripts and subscripts instead of\n * handling them itself.\n */\nconst htmlBuilderDelegate = function (group, options) {\n const base = group.base;\n\n if (!base) {\n return null;\n } else if (base.type === \"op\") {\n // Operators handle supsubs differently when they have limits\n // (e.g. `\\displaystyle\\sum_2^3`)\n const delegate = base.limits && (options.style.size === src_Style.DISPLAY.size || base.alwaysHandleSupSub);\n return delegate ? op_htmlBuilder : null;\n } else if (base.type === \"operatorname\") {\n const delegate = base.alwaysHandleSupSub && (options.style.size === src_Style.DISPLAY.size || base.limits);\n return delegate ? operatorname_htmlBuilder : null;\n } else if (base.type === \"accent\") {\n return utils.isCharacterBox(base.base) ? htmlBuilder : null;\n } else if (base.type === \"horizBrace\") {\n const isSup = !group.sub;\n return isSup === base.isOver ? horizBrace_htmlBuilder : null;\n } else {\n return null;\n }\n}; // Super scripts and subscripts, whose precise placement can depend on other\n// functions that precede them.\n\n\ndefineFunctionBuilders({\n type: \"supsub\",\n\n htmlBuilder(group, options) {\n // Superscript and subscripts are handled in the TeXbook on page\n // 445-446, rules 18(a-f).\n // Here is where we defer to the inner group if it should handle\n // superscripts and subscripts itself.\n const builderDelegate = htmlBuilderDelegate(group, options);\n\n if (builderDelegate) {\n return builderDelegate(group, options);\n }\n\n const {\n base: valueBase,\n sup: valueSup,\n sub: valueSub\n } = group;\n const base = buildGroup(valueBase, options);\n let supm;\n let subm;\n const metrics = options.fontMetrics(); // Rule 18a\n\n let supShift = 0;\n let subShift = 0;\n const isCharacterBox = valueBase && utils.isCharacterBox(valueBase);\n\n if (valueSup) {\n const newOptions = options.havingStyle(options.style.sup());\n supm = buildGroup(valueSup, newOptions, options);\n\n if (!isCharacterBox) {\n supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier;\n }\n }\n\n if (valueSub) {\n const newOptions = options.havingStyle(options.style.sub());\n subm = buildGroup(valueSub, newOptions, options);\n\n if (!isCharacterBox) {\n subShift = base.depth + newOptions.fontMetrics().subDrop * newOptions.sizeMultiplier / options.sizeMultiplier;\n }\n } // Rule 18c\n\n\n let minSupShift;\n\n if (options.style === src_Style.DISPLAY) {\n minSupShift = metrics.sup1;\n } else if (options.style.cramped) {\n minSupShift = metrics.sup3;\n } else {\n minSupShift = metrics.sup2;\n } // scriptspace is a font-size-independent size, so scale it\n // appropriately for use as the marginRight.\n\n\n const multiplier = options.sizeMultiplier;\n const marginRight = makeEm(0.5 / metrics.ptPerEm / multiplier);\n let marginLeft = null;\n\n if (subm) {\n // Subscripts shouldn't be shifted by the base's italic correction.\n // Account for that by shifting the subscript back the appropriate\n // amount. Note we only do this when the base is a single symbol.\n const isOiint = group.base && group.base.type === \"op\" && group.base.name && (group.base.name === \"\\\\oiint\" || group.base.name === \"\\\\oiiint\");\n\n if (base instanceof SymbolNode || isOiint) {\n // $FlowFixMe\n marginLeft = makeEm(-base.italic);\n }\n }\n\n let supsub;\n\n if (supm && subm) {\n supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);\n subShift = Math.max(subShift, metrics.sub2);\n const ruleWidth = metrics.defaultRuleThickness; // Rule 18e\n\n const maxWidth = 4 * ruleWidth;\n\n if (supShift - supm.depth - (subm.height - subShift) < maxWidth) {\n subShift = maxWidth - (supShift - supm.depth) + subm.height;\n const psi = 0.8 * metrics.xHeight - (supShift - supm.depth);\n\n if (psi > 0) {\n supShift += psi;\n subShift -= psi;\n }\n }\n\n const vlistElem = [{\n type: \"elem\",\n elem: subm,\n shift: subShift,\n marginRight,\n marginLeft\n }, {\n type: \"elem\",\n elem: supm,\n shift: -supShift,\n marginRight\n }];\n supsub = buildCommon.makeVList({\n positionType: \"individualShift\",\n children: vlistElem\n }, options);\n } else if (subm) {\n // Rule 18b\n subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight);\n const vlistElem = [{\n type: \"elem\",\n elem: subm,\n marginLeft,\n marginRight\n }];\n supsub = buildCommon.makeVList({\n positionType: \"shift\",\n positionData: subShift,\n children: vlistElem\n }, options);\n } else if (supm) {\n // Rule 18c, d\n supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);\n supsub = buildCommon.makeVList({\n positionType: \"shift\",\n positionData: -supShift,\n children: [{\n type: \"elem\",\n elem: supm,\n marginRight\n }]\n }, options);\n } else {\n throw new Error(\"supsub must have either sup or sub.\");\n } // Wrap the supsub vlist in a span.msupsub to reset text-align.\n\n\n const mclass = getTypeOfDomTree(base, \"right\") || \"mord\";\n return buildCommon.makeSpan([mclass], [base, buildCommon.makeSpan([\"msupsub\"], [supsub])], options);\n },\n\n mathmlBuilder(group, options) {\n // Is the inner group a relevant horizonal brace?\n let isBrace = false;\n let isOver;\n let isSup;\n\n if (group.base && group.base.type === \"horizBrace\") {\n isSup = !!group.sup;\n\n if (isSup === group.base.isOver) {\n isBrace = true;\n isOver = group.base.isOver;\n }\n }\n\n if (group.base && (group.base.type === \"op\" || group.base.type === \"operatorname\")) {\n group.base.parentIsSupSub = true;\n }\n\n const children = [buildMathML_buildGroup(group.base, options)];\n\n if (group.sub) {\n children.push(buildMathML_buildGroup(group.sub, options));\n }\n\n if (group.sup) {\n children.push(buildMathML_buildGroup(group.sup, options));\n }\n\n let nodeType;\n\n if (isBrace) {\n nodeType = isOver ? \"mover\" : \"munder\";\n } else if (!group.sub) {\n const base = group.base;\n\n if (base && base.type === \"op\" && base.limits && (options.style === src_Style.DISPLAY || base.alwaysHandleSupSub)) {\n nodeType = \"mover\";\n } else if (base && base.type === \"operatorname\" && base.alwaysHandleSupSub && (base.limits || options.style === src_Style.DISPLAY)) {\n nodeType = \"mover\";\n } else {\n nodeType = \"msup\";\n }\n } else if (!group.sup) {\n const base = group.base;\n\n if (base && base.type === \"op\" && base.limits && (options.style === src_Style.DISPLAY || base.alwaysHandleSupSub)) {\n nodeType = \"munder\";\n } else if (base && base.type === \"operatorname\" && base.alwaysHandleSupSub && (base.limits || options.style === src_Style.DISPLAY)) {\n nodeType = \"munder\";\n } else {\n nodeType = \"msub\";\n }\n } else {\n const base = group.base;\n\n if (base && base.type === \"op\" && base.limits && options.style === src_Style.DISPLAY) {\n nodeType = \"munderover\";\n } else if (base && base.type === \"operatorname\" && base.alwaysHandleSupSub && (options.style === src_Style.DISPLAY || base.limits)) {\n nodeType = \"munderover\";\n } else {\n nodeType = \"msubsup\";\n }\n }\n\n return new mathMLTree.MathNode(nodeType, children);\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/symbolsOp.js\n\n\n\n // Operator ParseNodes created in Parser.js from symbol Groups in src/symbols.js.\n\ndefineFunctionBuilders({\n type: \"atom\",\n\n htmlBuilder(group, options) {\n return buildCommon.mathsym(group.text, group.mode, options, [\"m\" + group.family]);\n },\n\n mathmlBuilder(group, options) {\n const node = new mathMLTree.MathNode(\"mo\", [makeText(group.text, group.mode)]);\n\n if (group.family === \"bin\") {\n const variant = getVariant(group, options);\n\n if (variant === \"bold-italic\") {\n node.setAttribute(\"mathvariant\", variant);\n }\n } else if (group.family === \"punct\") {\n node.setAttribute(\"separator\", \"true\");\n } else if (group.family === \"open\" || group.family === \"close\") {\n // Delims built here should not stretch vertically.\n // See delimsizing.js for stretchy delims.\n node.setAttribute(\"stretchy\", \"false\");\n }\n\n return node;\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/symbolsOrd.js\n\n\n\n\n// \"mathord\" and \"textord\" ParseNodes created in Parser.js from symbol Groups in\n// src/symbols.js.\nconst defaultVariant = {\n \"mi\": \"italic\",\n \"mn\": \"normal\",\n \"mtext\": \"normal\"\n};\ndefineFunctionBuilders({\n type: \"mathord\",\n\n htmlBuilder(group, options) {\n return buildCommon.makeOrd(group, options, \"mathord\");\n },\n\n mathmlBuilder(group, options) {\n const node = new mathMLTree.MathNode(\"mi\", [makeText(group.text, group.mode, options)]);\n const variant = getVariant(group, options) || \"italic\";\n\n if (variant !== defaultVariant[node.type]) {\n node.setAttribute(\"mathvariant\", variant);\n }\n\n return node;\n }\n\n});\ndefineFunctionBuilders({\n type: \"textord\",\n\n htmlBuilder(group, options) {\n return buildCommon.makeOrd(group, options, \"textord\");\n },\n\n mathmlBuilder(group, options) {\n const text = makeText(group.text, group.mode, options);\n const variant = getVariant(group, options) || \"normal\";\n let node;\n\n if (group.mode === 'text') {\n node = new mathMLTree.MathNode(\"mtext\", [text]);\n } else if (/[0-9]/.test(group.text)) {\n node = new mathMLTree.MathNode(\"mn\", [text]);\n } else if (group.text === \"\\\\prime\") {\n node = new mathMLTree.MathNode(\"mo\", [text]);\n } else {\n node = new mathMLTree.MathNode(\"mi\", [text]);\n }\n\n if (variant !== defaultVariant[node.type]) {\n node.setAttribute(\"mathvariant\", variant);\n }\n\n return node;\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/symbolsSpacing.js\n\n\n\n // A map of CSS-based spacing functions to their CSS class.\n\nconst cssSpace = {\n \"\\\\nobreak\": \"nobreak\",\n \"\\\\allowbreak\": \"allowbreak\"\n}; // A lookup table to determine whether a spacing function/symbol should be\n// treated like a regular space character. If a symbol or command is a key\n// in this table, then it should be a regular space character. Furthermore,\n// the associated value may have a `className` specifying an extra CSS class\n// to add to the created `span`.\n\nconst regularSpace = {\n \" \": {},\n \"\\\\ \": {},\n \"~\": {\n className: \"nobreak\"\n },\n \"\\\\space\": {},\n \"\\\\nobreakspace\": {\n className: \"nobreak\"\n }\n}; // ParseNode<\"spacing\"> created in Parser.js from the \"spacing\" symbol Groups in\n// src/symbols.js.\n\ndefineFunctionBuilders({\n type: \"spacing\",\n\n htmlBuilder(group, options) {\n if (regularSpace.hasOwnProperty(group.text)) {\n const className = regularSpace[group.text].className || \"\"; // Spaces are generated by adding an actual space. Each of these\n // things has an entry in the symbols table, so these will be turned\n // into appropriate outputs.\n\n if (group.mode === \"text\") {\n const ord = buildCommon.makeOrd(group, options, \"textord\");\n ord.classes.push(className);\n return ord;\n } else {\n return buildCommon.makeSpan([\"mspace\", className], [buildCommon.mathsym(group.text, group.mode, options)], options);\n }\n } else if (cssSpace.hasOwnProperty(group.text)) {\n // Spaces based on just a CSS class.\n return buildCommon.makeSpan([\"mspace\", cssSpace[group.text]], [], options);\n } else {\n throw new src_ParseError(\"Unknown type of space \\\"\" + group.text + \"\\\"\");\n }\n },\n\n mathmlBuilder(group, options) {\n let node;\n\n if (regularSpace.hasOwnProperty(group.text)) {\n node = new mathMLTree.MathNode(\"mtext\", [new mathMLTree.TextNode(\"\\u00a0\")]);\n } else if (cssSpace.hasOwnProperty(group.text)) {\n // CSS-based MathML spaces (\\nobreak, \\allowbreak) are ignored\n return new mathMLTree.MathNode(\"mspace\");\n } else {\n throw new src_ParseError(\"Unknown type of space \\\"\" + group.text + \"\\\"\");\n }\n\n return node;\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/tag.js\n\n\n\n\nconst pad = () => {\n const padNode = new mathMLTree.MathNode(\"mtd\", []);\n padNode.setAttribute(\"width\", \"50%\");\n return padNode;\n};\n\ndefineFunctionBuilders({\n type: \"tag\",\n\n mathmlBuilder(group, options) {\n const table = new mathMLTree.MathNode(\"mtable\", [new mathMLTree.MathNode(\"mtr\", [pad(), new mathMLTree.MathNode(\"mtd\", [buildExpressionRow(group.body, options)]), pad(), new mathMLTree.MathNode(\"mtd\", [buildExpressionRow(group.tag, options)])])]);\n table.setAttribute(\"width\", \"100%\");\n return table; // TODO: Left-aligned tags.\n // Currently, the group and options passed here do not contain\n // enough info to set tag alignment. `leqno` is in Settings but it is\n // not passed to Options. On the HTML side, leqno is\n // set by a CSS class applied in buildTree.js. That would have worked\n // in MathML if browsers supported . Since they don't, we\n // need to rewrite the way this function is called.\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/text.js\n\n\n\n // Non-mathy text, possibly in a font\n\nconst textFontFamilies = {\n \"\\\\text\": undefined,\n \"\\\\textrm\": \"textrm\",\n \"\\\\textsf\": \"textsf\",\n \"\\\\texttt\": \"texttt\",\n \"\\\\textnormal\": \"textrm\"\n};\nconst textFontWeights = {\n \"\\\\textbf\": \"textbf\",\n \"\\\\textmd\": \"textmd\"\n};\nconst textFontShapes = {\n \"\\\\textit\": \"textit\",\n \"\\\\textup\": \"textup\"\n};\n\nconst optionsWithFont = (group, options) => {\n const font = group.font; // Checks if the argument is a font family or a font style.\n\n if (!font) {\n return options;\n } else if (textFontFamilies[font]) {\n return options.withTextFontFamily(textFontFamilies[font]);\n } else if (textFontWeights[font]) {\n return options.withTextFontWeight(textFontWeights[font]);\n } else if (font === \"\\\\emph\") {\n return options.fontShape === \"textit\" ? options.withTextFontShape(\"textup\") : options.withTextFontShape(\"textit\");\n }\n\n return options.withTextFontShape(textFontShapes[font]);\n};\n\ndefineFunction({\n type: \"text\",\n names: [// Font families\n \"\\\\text\", \"\\\\textrm\", \"\\\\textsf\", \"\\\\texttt\", \"\\\\textnormal\", // Font weights\n \"\\\\textbf\", \"\\\\textmd\", // Font Shapes\n \"\\\\textit\", \"\\\\textup\", \"\\\\emph\"],\n props: {\n numArgs: 1,\n argTypes: [\"text\"],\n allowedInArgument: true,\n allowedInText: true\n },\n\n handler(_ref, args) {\n let {\n parser,\n funcName\n } = _ref;\n const body = args[0];\n return {\n type: \"text\",\n mode: parser.mode,\n body: ordargument(body),\n font: funcName\n };\n },\n\n htmlBuilder(group, options) {\n const newOptions = optionsWithFont(group, options);\n const inner = buildExpression(group.body, newOptions, true);\n return buildCommon.makeSpan([\"mord\", \"text\"], inner, newOptions);\n },\n\n mathmlBuilder(group, options) {\n const newOptions = optionsWithFont(group, options);\n return buildExpressionRow(group.body, newOptions);\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/underline.js\n\n\n\n\n\ndefineFunction({\n type: \"underline\",\n names: [\"\\\\underline\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n\n handler(_ref, args) {\n let {\n parser\n } = _ref;\n return {\n type: \"underline\",\n mode: parser.mode,\n body: args[0]\n };\n },\n\n htmlBuilder(group, options) {\n // Underlines are handled in the TeXbook pg 443, Rule 10.\n // Build the inner group.\n const innerGroup = buildGroup(group.body, options); // Create the line to go below the body\n\n const line = buildCommon.makeLineSpan(\"underline-line\", options); // Generate the vlist, with the appropriate kerns\n\n const defaultRuleThickness = options.fontMetrics().defaultRuleThickness;\n const vlist = buildCommon.makeVList({\n positionType: \"top\",\n positionData: innerGroup.height,\n children: [{\n type: \"kern\",\n size: defaultRuleThickness\n }, {\n type: \"elem\",\n elem: line\n }, {\n type: \"kern\",\n size: 3 * defaultRuleThickness\n }, {\n type: \"elem\",\n elem: innerGroup\n }]\n }, options);\n return buildCommon.makeSpan([\"mord\", \"underline\"], [vlist], options);\n },\n\n mathmlBuilder(group, options) {\n const operator = new mathMLTree.MathNode(\"mo\", [new mathMLTree.TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n const node = new mathMLTree.MathNode(\"munder\", [buildMathML_buildGroup(group.body, options), operator]);\n node.setAttribute(\"accentunder\", \"true\");\n return node;\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/vcenter.js\n\n\n\n\n // \\vcenter: Vertically center the argument group on the math axis.\n\ndefineFunction({\n type: \"vcenter\",\n names: [\"\\\\vcenter\"],\n props: {\n numArgs: 1,\n argTypes: [\"original\"],\n // In LaTeX, \\vcenter can act only on a box.\n allowedInText: false\n },\n\n handler(_ref, args) {\n let {\n parser\n } = _ref;\n return {\n type: \"vcenter\",\n mode: parser.mode,\n body: args[0]\n };\n },\n\n htmlBuilder(group, options) {\n const body = buildGroup(group.body, options);\n const axisHeight = options.fontMetrics().axisHeight;\n const dy = 0.5 * (body.height - axisHeight - (body.depth + axisHeight));\n return buildCommon.makeVList({\n positionType: \"shift\",\n positionData: dy,\n children: [{\n type: \"elem\",\n elem: body\n }]\n }, options);\n },\n\n mathmlBuilder(group, options) {\n // There is no way to do this in MathML.\n // Write a class as a breadcrumb in case some post-processor wants\n // to perform a vcenter adjustment.\n return new mathMLTree.MathNode(\"mpadded\", [buildMathML_buildGroup(group.body, options)], [\"vcenter\"]);\n }\n\n});\n;// CONCATENATED MODULE: ./src/functions/verb.js\n\n\n\n\ndefineFunction({\n type: \"verb\",\n names: [\"\\\\verb\"],\n props: {\n numArgs: 0,\n allowedInText: true\n },\n\n handler(context, args, optArgs) {\n // \\verb and \\verb* are dealt with directly in Parser.js.\n // If we end up here, it's because of a failure to match the two delimiters\n // in the regex in Lexer.js. LaTeX raises the following error when \\verb is\n // terminated by end of line (or file).\n throw new src_ParseError(\"\\\\verb ended by end of line instead of matching delimiter\");\n },\n\n htmlBuilder(group, options) {\n const text = makeVerb(group);\n const body = []; // \\verb enters text mode and therefore is sized like \\textstyle\n\n const newOptions = options.havingStyle(options.style.text());\n\n for (let i = 0; i < text.length; i++) {\n let c = text[i];\n\n if (c === '~') {\n c = '\\\\textasciitilde';\n }\n\n body.push(buildCommon.makeSymbol(c, \"Typewriter-Regular\", group.mode, newOptions, [\"mord\", \"texttt\"]));\n }\n\n return buildCommon.makeSpan([\"mord\", \"text\"].concat(newOptions.sizingClasses(options)), buildCommon.tryCombineChars(body), newOptions);\n },\n\n mathmlBuilder(group, options) {\n const text = new mathMLTree.TextNode(makeVerb(group));\n const node = new mathMLTree.MathNode(\"mtext\", [text]);\n node.setAttribute(\"mathvariant\", \"monospace\");\n return node;\n }\n\n});\n/**\n * Converts verb group into body string.\n *\n * \\verb* replaces each space with an open box \\u2423\n * \\verb replaces each space with a no-break space \\xA0\n */\n\nconst makeVerb = group => group.body.replace(/ /g, group.star ? '\\u2423' : '\\xA0');\n;// CONCATENATED MODULE: ./src/functions.js\n/** Include this to ensure that all functions are defined. */\n\nconst functions = _functions;\n/* harmony default export */ var src_functions = (functions); // TODO(kevinb): have functions return an object and call defineFunction with\n// that object in this file instead of relying on side-effects.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n;// CONCATENATED MODULE: ./src/Lexer.js\n/**\n * The Lexer class handles tokenizing the input in various ways. Since our\n * parser expects us to be able to backtrack, the lexer allows lexing from any\n * given starting point.\n *\n * Its main exposed function is the `lex` function, which takes a position to\n * lex from and a type of token to lex. It defers to the appropriate `_innerLex`\n * function.\n *\n * The various `_innerLex` functions perform the actual lexing of different\n * kinds.\n */\n\n\n\n\n/* The following tokenRegex\n * - matches typical whitespace (but not NBSP etc.) using its first group\n * - does not match any control character \\x00-\\x1f except whitespace\n * - does not match a bare backslash\n * - matches any ASCII character except those just mentioned\n * - does not match the BMP private use area \\uE000-\\uF8FF\n * - does not match bare surrogate code units\n * - matches any BMP character except for those just described\n * - matches any valid Unicode surrogate pair\n * - matches a backslash followed by one or more whitespace characters\n * - matches a backslash followed by one or more letters then whitespace\n * - matches a backslash followed by any BMP character\n * Capturing groups:\n * [1] regular whitespace\n * [2] backslash followed by whitespace\n * [3] anything else, which may include:\n * [4] left character of \\verb*\n * [5] left character of \\verb\n * [6] backslash followed by word, excluding any trailing whitespace\n * Just because the Lexer matches something doesn't mean it's valid input:\n * If there is no matching function or symbol definition, the Parser will\n * still reject the input.\n */\nconst spaceRegexString = \"[ \\r\\n\\t]\";\nconst controlWordRegexString = \"\\\\\\\\[a-zA-Z@]+\";\nconst controlSymbolRegexString = \"\\\\\\\\[^\\uD800-\\uDFFF]\";\nconst controlWordWhitespaceRegexString = \"(\" + controlWordRegexString + \")\" + spaceRegexString + \"*\";\nconst controlSpaceRegexString = \"\\\\\\\\(\\n|[ \\r\\t]+\\n?)[ \\r\\t]*\";\nconst combiningDiacriticalMarkString = \"[\\u0300-\\u036f]\";\nconst combiningDiacriticalMarksEndRegex = new RegExp(combiningDiacriticalMarkString + \"+$\");\nconst tokenRegexString = \"(\" + spaceRegexString + \"+)|\" + ( // whitespace\ncontrolSpaceRegexString + \"|\") + // \\whitespace\n\"([!-\\\\[\\\\]-\\u2027\\u202A-\\uD7FF\\uF900-\\uFFFF]\" + ( // single codepoint\ncombiningDiacriticalMarkString + \"*\") + // ...plus accents\n\"|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\" + ( // surrogate pair\ncombiningDiacriticalMarkString + \"*\") + // ...plus accents\n\"|\\\\\\\\verb\\\\*([^]).*?\\\\4\" + // \\verb*\n\"|\\\\\\\\verb([^*a-zA-Z]).*?\\\\5\" + ( // \\verb unstarred\n\"|\" + controlWordWhitespaceRegexString) + ( // \\macroName + spaces\n\"|\" + controlSymbolRegexString + \")\"); // \\\\, \\', etc.\n\n/** Main Lexer class */\n\nclass Lexer {\n // Category codes. The lexer only supports comment characters (14) for now.\n // MacroExpander additionally distinguishes active (13).\n constructor(input, settings) {\n this.input = void 0;\n this.settings = void 0;\n this.tokenRegex = void 0;\n this.catcodes = void 0;\n // Separate accents from characters\n this.input = input;\n this.settings = settings;\n this.tokenRegex = new RegExp(tokenRegexString, 'g');\n this.catcodes = {\n \"%\": 14,\n // comment character\n \"~\": 13 // active character\n\n };\n }\n\n setCatcode(char, code) {\n this.catcodes[char] = code;\n }\n /**\n * This function lexes a single token.\n */\n\n\n lex() {\n const input = this.input;\n const pos = this.tokenRegex.lastIndex;\n\n if (pos === input.length) {\n return new Token(\"EOF\", new SourceLocation(this, pos, pos));\n }\n\n const match = this.tokenRegex.exec(input);\n\n if (match === null || match.index !== pos) {\n throw new src_ParseError(\"Unexpected character: '\" + input[pos] + \"'\", new Token(input[pos], new SourceLocation(this, pos, pos + 1)));\n }\n\n const text = match[6] || match[3] || (match[2] ? \"\\\\ \" : \" \");\n\n if (this.catcodes[text] === 14) {\n // comment character\n const nlIndex = input.indexOf('\\n', this.tokenRegex.lastIndex);\n\n if (nlIndex === -1) {\n this.tokenRegex.lastIndex = input.length; // EOF\n\n this.settings.reportNonstrict(\"commentAtEnd\", \"% comment has no terminating newline; LaTeX would \" + \"fail because of commenting the end of math mode (e.g. $)\");\n } else {\n this.tokenRegex.lastIndex = nlIndex + 1;\n }\n\n return this.lex();\n }\n\n return new Token(text, new SourceLocation(this, pos, this.tokenRegex.lastIndex));\n }\n\n}\n;// CONCATENATED MODULE: ./src/Namespace.js\n/**\n * A `Namespace` refers to a space of nameable things like macros or lengths,\n * which can be `set` either globally or local to a nested group, using an\n * undo stack similar to how TeX implements this functionality.\n * Performance-wise, `get` and local `set` take constant time, while global\n * `set` takes time proportional to the depth of group nesting.\n */\n\nclass Namespace {\n /**\n * Both arguments are optional. The first argument is an object of\n * built-in mappings which never change. The second argument is an object\n * of initial (global-level) mappings, which will constantly change\n * according to any global/top-level `set`s done.\n */\n constructor(builtins, globalMacros) {\n if (builtins === void 0) {\n builtins = {};\n }\n\n if (globalMacros === void 0) {\n globalMacros = {};\n }\n\n this.current = void 0;\n this.builtins = void 0;\n this.undefStack = void 0;\n this.current = globalMacros;\n this.builtins = builtins;\n this.undefStack = [];\n }\n /**\n * Start a new nested group, affecting future local `set`s.\n */\n\n\n beginGroup() {\n this.undefStack.push({});\n }\n /**\n * End current nested group, restoring values before the group began.\n */\n\n\n endGroup() {\n if (this.undefStack.length === 0) {\n throw new src_ParseError(\"Unbalanced namespace destruction: attempt \" + \"to pop global namespace; please report this as a bug\");\n }\n\n const undefs = this.undefStack.pop();\n\n for (const undef in undefs) {\n if (undefs.hasOwnProperty(undef)) {\n if (undefs[undef] == null) {\n delete this.current[undef];\n } else {\n this.current[undef] = undefs[undef];\n }\n }\n }\n }\n /**\n * Ends all currently nested groups (if any), restoring values before the\n * groups began. Useful in case of an error in the middle of parsing.\n */\n\n\n endGroups() {\n while (this.undefStack.length > 0) {\n this.endGroup();\n }\n }\n /**\n * Detect whether `name` has a definition. Equivalent to\n * `get(name) != null`.\n */\n\n\n has(name) {\n return this.current.hasOwnProperty(name) || this.builtins.hasOwnProperty(name);\n }\n /**\n * Get the current value of a name, or `undefined` if there is no value.\n *\n * Note: Do not use `if (namespace.get(...))` to detect whether a macro\n * is defined, as the definition may be the empty string which evaluates\n * to `false` in JavaScript. Use `if (namespace.get(...) != null)` or\n * `if (namespace.has(...))`.\n */\n\n\n get(name) {\n if (this.current.hasOwnProperty(name)) {\n return this.current[name];\n } else {\n return this.builtins[name];\n }\n }\n /**\n * Set the current value of a name, and optionally set it globally too.\n * Local set() sets the current value and (when appropriate) adds an undo\n * operation to the undo stack. Global set() may change the undo\n * operation at every level, so takes time linear in their number.\n * A value of undefined means to delete existing definitions.\n */\n\n\n set(name, value, global) {\n if (global === void 0) {\n global = false;\n }\n\n if (global) {\n // Global set is equivalent to setting in all groups. Simulate this\n // by destroying any undos currently scheduled for this name,\n // and adding an undo with the *new* value (in case it later gets\n // locally reset within this environment).\n for (let i = 0; i < this.undefStack.length; i++) {\n delete this.undefStack[i][name];\n }\n\n if (this.undefStack.length > 0) {\n this.undefStack[this.undefStack.length - 1][name] = value;\n }\n } else {\n // Undo this set at end of this group (possibly to `undefined`),\n // unless an undo is already in place, in which case that older\n // value is the correct one.\n const top = this.undefStack[this.undefStack.length - 1];\n\n if (top && !top.hasOwnProperty(name)) {\n top[name] = this.current[name];\n }\n }\n\n if (value == null) {\n delete this.current[name];\n } else {\n this.current[name] = value;\n }\n }\n\n}\n;// CONCATENATED MODULE: ./src/macros.js\n/**\n * Predefined macros for KaTeX.\n * This can be used to define some commands in terms of others.\n */\n// Export global macros object from defineMacro\n\nconst macros = _macros;\n/* harmony default export */ var src_macros = (macros);\n\n\n\n\n\n //////////////////////////////////////////////////////////////////////\n// macro tools\n\ndefineMacro(\"\\\\noexpand\", function (context) {\n // The expansion is the token itself; but that token is interpreted\n // as if its meaning were ‘\\relax’ if it is a control sequence that\n // would ordinarily be expanded by TeX’s expansion rules.\n const t = context.popToken();\n\n if (context.isExpandable(t.text)) {\n t.noexpand = true;\n t.treatAsRelax = true;\n }\n\n return {\n tokens: [t],\n numArgs: 0\n };\n});\ndefineMacro(\"\\\\expandafter\", function (context) {\n // TeX first reads the token that comes immediately after \\expandafter,\n // without expanding it; let’s call this token t. Then TeX reads the\n // token that comes after t (and possibly more tokens, if that token\n // has an argument), replacing it by its expansion. Finally TeX puts\n // t back in front of that expansion.\n const t = context.popToken();\n context.expandOnce(true); // expand only an expandable token\n\n return {\n tokens: [t],\n numArgs: 0\n };\n}); // LaTeX's \\@firstoftwo{#1}{#2} expands to #1, skipping #2\n// TeX source: \\long\\def\\@firstoftwo#1#2{#1}\n\ndefineMacro(\"\\\\@firstoftwo\", function (context) {\n const args = context.consumeArgs(2);\n return {\n tokens: args[0],\n numArgs: 0\n };\n}); // LaTeX's \\@secondoftwo{#1}{#2} expands to #2, skipping #1\n// TeX source: \\long\\def\\@secondoftwo#1#2{#2}\n\ndefineMacro(\"\\\\@secondoftwo\", function (context) {\n const args = context.consumeArgs(2);\n return {\n tokens: args[1],\n numArgs: 0\n };\n}); // LaTeX's \\@ifnextchar{#1}{#2}{#3} looks ahead to the next (unexpanded)\n// symbol that isn't a space, consuming any spaces but not consuming the\n// first nonspace character. If that nonspace character matches #1, then\n// the macro expands to #2; otherwise, it expands to #3.\n\ndefineMacro(\"\\\\@ifnextchar\", function (context) {\n const args = context.consumeArgs(3); // symbol, if, else\n\n context.consumeSpaces();\n const nextToken = context.future();\n\n if (args[0].length === 1 && args[0][0].text === nextToken.text) {\n return {\n tokens: args[1],\n numArgs: 0\n };\n } else {\n return {\n tokens: args[2],\n numArgs: 0\n };\n }\n}); // LaTeX's \\@ifstar{#1}{#2} looks ahead to the next (unexpanded) symbol.\n// If it is `*`, then it consumes the symbol, and the macro expands to #1;\n// otherwise, the macro expands to #2 (without consuming the symbol).\n// TeX source: \\def\\@ifstar#1{\\@ifnextchar *{\\@firstoftwo{#1}}}\n\ndefineMacro(\"\\\\@ifstar\", \"\\\\@ifnextchar *{\\\\@firstoftwo{#1}}\"); // LaTeX's \\TextOrMath{#1}{#2} expands to #1 in text mode, #2 in math mode\n\ndefineMacro(\"\\\\TextOrMath\", function (context) {\n const args = context.consumeArgs(2);\n\n if (context.mode === 'text') {\n return {\n tokens: args[0],\n numArgs: 0\n };\n } else {\n return {\n tokens: args[1],\n numArgs: 0\n };\n }\n}); // Lookup table for parsing numbers in base 8 through 16\n\nconst digitToNumber = {\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 \"a\": 10,\n \"A\": 10,\n \"b\": 11,\n \"B\": 11,\n \"c\": 12,\n \"C\": 12,\n \"d\": 13,\n \"D\": 13,\n \"e\": 14,\n \"E\": 14,\n \"f\": 15,\n \"F\": 15\n}; // TeX \\char makes a literal character (catcode 12) using the following forms:\n// (see The TeXBook, p. 43)\n// \\char123 -- decimal\n// \\char'123 -- octal\n// \\char\"123 -- hex\n// \\char`x -- character that can be written (i.e. isn't active)\n// \\char`\\x -- character that cannot be written (e.g. %)\n// These all refer to characters from the font, so we turn them into special\n// calls to a function \\@char dealt with in the Parser.\n\ndefineMacro(\"\\\\char\", function (context) {\n let token = context.popToken();\n let base;\n let number = '';\n\n if (token.text === \"'\") {\n base = 8;\n token = context.popToken();\n } else if (token.text === '\"') {\n base = 16;\n token = context.popToken();\n } else if (token.text === \"`\") {\n token = context.popToken();\n\n if (token.text[0] === \"\\\\\") {\n number = token.text.charCodeAt(1);\n } else if (token.text === \"EOF\") {\n throw new src_ParseError(\"\\\\char` missing argument\");\n } else {\n number = token.text.charCodeAt(0);\n }\n } else {\n base = 10;\n }\n\n if (base) {\n // Parse a number in the given base, starting with first `token`.\n number = digitToNumber[token.text];\n\n if (number == null || number >= base) {\n throw new src_ParseError(\"Invalid base-\" + base + \" digit \" + token.text);\n }\n\n let digit;\n\n while ((digit = digitToNumber[context.future().text]) != null && digit < base) {\n number *= base;\n number += digit;\n context.popToken();\n }\n }\n\n return \"\\\\@char{\" + number + \"}\";\n}); // \\newcommand{\\macro}[args]{definition}\n// \\renewcommand{\\macro}[args]{definition}\n// TODO: Optional arguments: \\newcommand{\\macro}[args][default]{definition}\n\nconst newcommand = (context, existsOK, nonexistsOK) => {\n let arg = context.consumeArg().tokens;\n\n if (arg.length !== 1) {\n throw new src_ParseError(\"\\\\newcommand's first argument must be a macro name\");\n }\n\n const name = arg[0].text;\n const exists = context.isDefined(name);\n\n if (exists && !existsOK) {\n throw new src_ParseError(\"\\\\newcommand{\" + name + \"} attempting to redefine \" + (name + \"; use \\\\renewcommand\"));\n }\n\n if (!exists && !nonexistsOK) {\n throw new src_ParseError(\"\\\\renewcommand{\" + name + \"} when command \" + name + \" \" + \"does not yet exist; use \\\\newcommand\");\n }\n\n let numArgs = 0;\n arg = context.consumeArg().tokens;\n\n if (arg.length === 1 && arg[0].text === \"[\") {\n let argText = '';\n let token = context.expandNextToken();\n\n while (token.text !== \"]\" && token.text !== \"EOF\") {\n // TODO: Should properly expand arg, e.g., ignore {}s\n argText += token.text;\n token = context.expandNextToken();\n }\n\n if (!argText.match(/^\\s*[0-9]+\\s*$/)) {\n throw new src_ParseError(\"Invalid number of arguments: \" + argText);\n }\n\n numArgs = parseInt(argText);\n arg = context.consumeArg().tokens;\n } // Final arg is the expansion of the macro\n\n\n context.macros.set(name, {\n tokens: arg,\n numArgs\n });\n return '';\n};\n\ndefineMacro(\"\\\\newcommand\", context => newcommand(context, false, true));\ndefineMacro(\"\\\\renewcommand\", context => newcommand(context, true, false));\ndefineMacro(\"\\\\providecommand\", context => newcommand(context, true, true)); // terminal (console) tools\n\ndefineMacro(\"\\\\message\", context => {\n const arg = context.consumeArgs(1)[0]; // eslint-disable-next-line no-console\n\n console.log(arg.reverse().map(token => token.text).join(\"\"));\n return '';\n});\ndefineMacro(\"\\\\errmessage\", context => {\n const arg = context.consumeArgs(1)[0]; // eslint-disable-next-line no-console\n\n console.error(arg.reverse().map(token => token.text).join(\"\"));\n return '';\n});\ndefineMacro(\"\\\\show\", context => {\n const tok = context.popToken();\n const name = tok.text; // eslint-disable-next-line no-console\n\n console.log(tok, context.macros.get(name), src_functions[name], src_symbols.math[name], src_symbols.text[name]);\n return '';\n}); //////////////////////////////////////////////////////////////////////\n// Grouping\n// \\let\\bgroup={ \\let\\egroup=}\n\ndefineMacro(\"\\\\bgroup\", \"{\");\ndefineMacro(\"\\\\egroup\", \"}\"); // Symbols from latex.ltx:\n// \\def~{\\nobreakspace{}}\n// \\def\\lq{`}\n// \\def\\rq{'}\n// \\def \\aa {\\r a}\n// \\def \\AA {\\r A}\n\ndefineMacro(\"~\", \"\\\\nobreakspace\");\ndefineMacro(\"\\\\lq\", \"`\");\ndefineMacro(\"\\\\rq\", \"'\");\ndefineMacro(\"\\\\aa\", \"\\\\r a\");\ndefineMacro(\"\\\\AA\", \"\\\\r A\"); // Copyright (C) and registered (R) symbols. Use raw symbol in MathML.\n// \\DeclareTextCommandDefault{\\textcopyright}{\\textcircled{c}}\n// \\DeclareTextCommandDefault{\\textregistered}{\\textcircled{%\n// \\check@mathfonts\\fontsize\\sf@size\\z@\\math@fontsfalse\\selectfont R}}\n// \\DeclareRobustCommand{\\copyright}{%\n// \\ifmmode{\\nfss@text{\\textcopyright}}\\else\\textcopyright\\fi}\n\ndefineMacro(\"\\\\textcopyright\", \"\\\\html@mathml{\\\\textcircled{c}}{\\\\char`©}\");\ndefineMacro(\"\\\\copyright\", \"\\\\TextOrMath{\\\\textcopyright}{\\\\text{\\\\textcopyright}}\");\ndefineMacro(\"\\\\textregistered\", \"\\\\html@mathml{\\\\textcircled{\\\\scriptsize R}}{\\\\char`®}\"); // Characters omitted from Unicode range 1D400–1D7FF\n\ndefineMacro(\"\\u212C\", \"\\\\mathscr{B}\"); // script\n\ndefineMacro(\"\\u2130\", \"\\\\mathscr{E}\");\ndefineMacro(\"\\u2131\", \"\\\\mathscr{F}\");\ndefineMacro(\"\\u210B\", \"\\\\mathscr{H}\");\ndefineMacro(\"\\u2110\", \"\\\\mathscr{I}\");\ndefineMacro(\"\\u2112\", \"\\\\mathscr{L}\");\ndefineMacro(\"\\u2133\", \"\\\\mathscr{M}\");\ndefineMacro(\"\\u211B\", \"\\\\mathscr{R}\");\ndefineMacro(\"\\u212D\", \"\\\\mathfrak{C}\"); // Fraktur\n\ndefineMacro(\"\\u210C\", \"\\\\mathfrak{H}\");\ndefineMacro(\"\\u2128\", \"\\\\mathfrak{Z}\"); // Define \\Bbbk with a macro that works in both HTML and MathML.\n\ndefineMacro(\"\\\\Bbbk\", \"\\\\Bbb{k}\"); // Unicode middle dot\n// The KaTeX fonts do not contain U+00B7. Instead, \\cdotp displays\n// the dot at U+22C5 and gives it punct spacing.\n\ndefineMacro(\"\\u00b7\", \"\\\\cdotp\"); // \\llap and \\rlap render their contents in text mode\n\ndefineMacro(\"\\\\llap\", \"\\\\mathllap{\\\\textrm{#1}}\");\ndefineMacro(\"\\\\rlap\", \"\\\\mathrlap{\\\\textrm{#1}}\");\ndefineMacro(\"\\\\clap\", \"\\\\mathclap{\\\\textrm{#1}}\"); // \\mathstrut from the TeXbook, p 360\n\ndefineMacro(\"\\\\mathstrut\", \"\\\\vphantom{(}\"); // \\underbar from TeXbook p 353\n\ndefineMacro(\"\\\\underbar\", \"\\\\underline{\\\\text{#1}}\"); // \\not is defined by base/fontmath.ltx via\n// \\DeclareMathSymbol{\\not}{\\mathrel}{symbols}{\"36}\n// It's thus treated like a \\mathrel, but defined by a symbol that has zero\n// width but extends to the right. We use \\rlap to get that spacing.\n// For MathML we write U+0338 here. buildMathML.js will then do the overlay.\n\ndefineMacro(\"\\\\not\", '\\\\html@mathml{\\\\mathrel{\\\\mathrlap\\\\@not}}{\\\\char\"338}'); // Negated symbols from base/fontmath.ltx:\n// \\def\\neq{\\not=} \\let\\ne=\\neq\n// \\DeclareRobustCommand\n// \\notin{\\mathrel{\\m@th\\mathpalette\\c@ncel\\in}}\n// \\def\\c@ncel#1#2{\\m@th\\ooalign{$\\hfil#1\\mkern1mu/\\hfil$\\crcr$#1#2$}}\n\ndefineMacro(\"\\\\neq\", \"\\\\html@mathml{\\\\mathrel{\\\\not=}}{\\\\mathrel{\\\\char`≠}}\");\ndefineMacro(\"\\\\ne\", \"\\\\neq\");\ndefineMacro(\"\\u2260\", \"\\\\neq\");\ndefineMacro(\"\\\\notin\", \"\\\\html@mathml{\\\\mathrel{{\\\\in}\\\\mathllap{/\\\\mskip1mu}}}\" + \"{\\\\mathrel{\\\\char`∉}}\");\ndefineMacro(\"\\u2209\", \"\\\\notin\"); // Unicode stacked relations\n\ndefineMacro(\"\\u2258\", \"\\\\html@mathml{\" + \"\\\\mathrel{=\\\\kern{-1em}\\\\raisebox{0.4em}{$\\\\scriptsize\\\\frown$}}\" + \"}{\\\\mathrel{\\\\char`\\u2258}}\");\ndefineMacro(\"\\u2259\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\wedge}{=}}{\\\\mathrel{\\\\char`\\u2258}}\");\ndefineMacro(\"\\u225A\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\vee}{=}}{\\\\mathrel{\\\\char`\\u225A}}\");\ndefineMacro(\"\\u225B\", \"\\\\html@mathml{\\\\stackrel{\\\\scriptsize\\\\star}{=}}\" + \"{\\\\mathrel{\\\\char`\\u225B}}\");\ndefineMacro(\"\\u225D\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\mathrm{def}}{=}}\" + \"{\\\\mathrel{\\\\char`\\u225D}}\");\ndefineMacro(\"\\u225E\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\mathrm{m}}{=}}\" + \"{\\\\mathrel{\\\\char`\\u225E}}\");\ndefineMacro(\"\\u225F\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny?}{=}}{\\\\mathrel{\\\\char`\\u225F}}\"); // Misc Unicode\n\ndefineMacro(\"\\u27C2\", \"\\\\perp\");\ndefineMacro(\"\\u203C\", \"\\\\mathclose{!\\\\mkern-0.8mu!}\");\ndefineMacro(\"\\u220C\", \"\\\\notni\");\ndefineMacro(\"\\u231C\", \"\\\\ulcorner\");\ndefineMacro(\"\\u231D\", \"\\\\urcorner\");\ndefineMacro(\"\\u231E\", \"\\\\llcorner\");\ndefineMacro(\"\\u231F\", \"\\\\lrcorner\");\ndefineMacro(\"\\u00A9\", \"\\\\copyright\");\ndefineMacro(\"\\u00AE\", \"\\\\textregistered\");\ndefineMacro(\"\\uFE0F\", \"\\\\textregistered\"); // The KaTeX fonts have corners at codepoints that don't match Unicode.\n// For MathML purposes, use the Unicode code point.\n\ndefineMacro(\"\\\\ulcorner\", \"\\\\html@mathml{\\\\@ulcorner}{\\\\mathop{\\\\char\\\"231c}}\");\ndefineMacro(\"\\\\urcorner\", \"\\\\html@mathml{\\\\@urcorner}{\\\\mathop{\\\\char\\\"231d}}\");\ndefineMacro(\"\\\\llcorner\", \"\\\\html@mathml{\\\\@llcorner}{\\\\mathop{\\\\char\\\"231e}}\");\ndefineMacro(\"\\\\lrcorner\", \"\\\\html@mathml{\\\\@lrcorner}{\\\\mathop{\\\\char\\\"231f}}\"); //////////////////////////////////////////////////////////////////////\n// LaTeX_2ε\n// \\vdots{\\vbox{\\baselineskip4\\p@ \\lineskiplimit\\z@\n// \\kern6\\p@\\hbox{.}\\hbox{.}\\hbox{.}}}\n// We'll call \\varvdots, which gets a glyph from symbols.js.\n// The zero-width rule gets us an equivalent to the vertical 6pt kern.\n\ndefineMacro(\"\\\\vdots\", \"\\\\mathord{\\\\varvdots\\\\rule{0pt}{15pt}}\");\ndefineMacro(\"\\u22ee\", \"\\\\vdots\"); //////////////////////////////////////////////////////////////////////\n// amsmath.sty\n// http://mirrors.concertpass.com/tex-archive/macros/latex/required/amsmath/amsmath.pdf\n// Italic Greek capital letters. AMS defines these with \\DeclareMathSymbol,\n// but they are equivalent to \\mathit{\\Letter}.\n\ndefineMacro(\"\\\\varGamma\", \"\\\\mathit{\\\\Gamma}\");\ndefineMacro(\"\\\\varDelta\", \"\\\\mathit{\\\\Delta}\");\ndefineMacro(\"\\\\varTheta\", \"\\\\mathit{\\\\Theta}\");\ndefineMacro(\"\\\\varLambda\", \"\\\\mathit{\\\\Lambda}\");\ndefineMacro(\"\\\\varXi\", \"\\\\mathit{\\\\Xi}\");\ndefineMacro(\"\\\\varPi\", \"\\\\mathit{\\\\Pi}\");\ndefineMacro(\"\\\\varSigma\", \"\\\\mathit{\\\\Sigma}\");\ndefineMacro(\"\\\\varUpsilon\", \"\\\\mathit{\\\\Upsilon}\");\ndefineMacro(\"\\\\varPhi\", \"\\\\mathit{\\\\Phi}\");\ndefineMacro(\"\\\\varPsi\", \"\\\\mathit{\\\\Psi}\");\ndefineMacro(\"\\\\varOmega\", \"\\\\mathit{\\\\Omega}\"); //\\newcommand{\\substack}[1]{\\subarray{c}#1\\endsubarray}\n\ndefineMacro(\"\\\\substack\", \"\\\\begin{subarray}{c}#1\\\\end{subarray}\"); // \\renewcommand{\\colon}{\\nobreak\\mskip2mu\\mathpunct{}\\nonscript\n// \\mkern-\\thinmuskip{:}\\mskip6muplus1mu\\relax}\n\ndefineMacro(\"\\\\colon\", \"\\\\nobreak\\\\mskip2mu\\\\mathpunct{}\" + \"\\\\mathchoice{\\\\mkern-3mu}{\\\\mkern-3mu}{}{}{:}\\\\mskip6mu\\\\relax\"); // \\newcommand{\\boxed}[1]{\\fbox{\\m@th$\\displaystyle#1$}}\n\ndefineMacro(\"\\\\boxed\", \"\\\\fbox{$\\\\displaystyle{#1}$}\"); // \\def\\iff{\\DOTSB\\;\\Longleftrightarrow\\;}\n// \\def\\implies{\\DOTSB\\;\\Longrightarrow\\;}\n// \\def\\impliedby{\\DOTSB\\;\\Longleftarrow\\;}\n\ndefineMacro(\"\\\\iff\", \"\\\\DOTSB\\\\;\\\\Longleftrightarrow\\\\;\");\ndefineMacro(\"\\\\implies\", \"\\\\DOTSB\\\\;\\\\Longrightarrow\\\\;\");\ndefineMacro(\"\\\\impliedby\", \"\\\\DOTSB\\\\;\\\\Longleftarrow\\\\;\"); // AMSMath's automatic \\dots, based on \\mdots@@ macro.\n\nconst dotsByToken = {\n ',': '\\\\dotsc',\n '\\\\not': '\\\\dotsb',\n // \\keybin@ checks for the following:\n '+': '\\\\dotsb',\n '=': '\\\\dotsb',\n '<': '\\\\dotsb',\n '>': '\\\\dotsb',\n '-': '\\\\dotsb',\n '*': '\\\\dotsb',\n ':': '\\\\dotsb',\n // Symbols whose definition starts with \\DOTSB:\n '\\\\DOTSB': '\\\\dotsb',\n '\\\\coprod': '\\\\dotsb',\n '\\\\bigvee': '\\\\dotsb',\n '\\\\bigwedge': '\\\\dotsb',\n '\\\\biguplus': '\\\\dotsb',\n '\\\\bigcap': '\\\\dotsb',\n '\\\\bigcup': '\\\\dotsb',\n '\\\\prod': '\\\\dotsb',\n '\\\\sum': '\\\\dotsb',\n '\\\\bigotimes': '\\\\dotsb',\n '\\\\bigoplus': '\\\\dotsb',\n '\\\\bigodot': '\\\\dotsb',\n '\\\\bigsqcup': '\\\\dotsb',\n '\\\\And': '\\\\dotsb',\n '\\\\longrightarrow': '\\\\dotsb',\n '\\\\Longrightarrow': '\\\\dotsb',\n '\\\\longleftarrow': '\\\\dotsb',\n '\\\\Longleftarrow': '\\\\dotsb',\n '\\\\longleftrightarrow': '\\\\dotsb',\n '\\\\Longleftrightarrow': '\\\\dotsb',\n '\\\\mapsto': '\\\\dotsb',\n '\\\\longmapsto': '\\\\dotsb',\n '\\\\hookrightarrow': '\\\\dotsb',\n '\\\\doteq': '\\\\dotsb',\n // Symbols whose definition starts with \\mathbin:\n '\\\\mathbin': '\\\\dotsb',\n // Symbols whose definition starts with \\mathrel:\n '\\\\mathrel': '\\\\dotsb',\n '\\\\relbar': '\\\\dotsb',\n '\\\\Relbar': '\\\\dotsb',\n '\\\\xrightarrow': '\\\\dotsb',\n '\\\\xleftarrow': '\\\\dotsb',\n // Symbols whose definition starts with \\DOTSI:\n '\\\\DOTSI': '\\\\dotsi',\n '\\\\int': '\\\\dotsi',\n '\\\\oint': '\\\\dotsi',\n '\\\\iint': '\\\\dotsi',\n '\\\\iiint': '\\\\dotsi',\n '\\\\iiiint': '\\\\dotsi',\n '\\\\idotsint': '\\\\dotsi',\n // Symbols whose definition starts with \\DOTSX:\n '\\\\DOTSX': '\\\\dotsx'\n};\ndefineMacro(\"\\\\dots\", function (context) {\n // TODO: If used in text mode, should expand to \\textellipsis.\n // However, in KaTeX, \\textellipsis and \\ldots behave the same\n // (in text mode), and it's unlikely we'd see any of the math commands\n // that affect the behavior of \\dots when in text mode. So fine for now\n // (until we support \\ifmmode ... \\else ... \\fi).\n let thedots = '\\\\dotso';\n const next = context.expandAfterFuture().text;\n\n if (next in dotsByToken) {\n thedots = dotsByToken[next];\n } else if (next.slice(0, 4) === '\\\\not') {\n thedots = '\\\\dotsb';\n } else if (next in src_symbols.math) {\n if (utils.contains(['bin', 'rel'], src_symbols.math[next].group)) {\n thedots = '\\\\dotsb';\n }\n }\n\n return thedots;\n});\nconst spaceAfterDots = {\n // \\rightdelim@ checks for the following:\n ')': true,\n ']': true,\n '\\\\rbrack': true,\n '\\\\}': true,\n '\\\\rbrace': true,\n '\\\\rangle': true,\n '\\\\rceil': true,\n '\\\\rfloor': true,\n '\\\\rgroup': true,\n '\\\\rmoustache': true,\n '\\\\right': true,\n '\\\\bigr': true,\n '\\\\biggr': true,\n '\\\\Bigr': true,\n '\\\\Biggr': true,\n // \\extra@ also tests for the following:\n '$': true,\n // \\extrap@ checks for the following:\n ';': true,\n '.': true,\n ',': true\n};\ndefineMacro(\"\\\\dotso\", function (context) {\n const next = context.future().text;\n\n if (next in spaceAfterDots) {\n return \"\\\\ldots\\\\,\";\n } else {\n return \"\\\\ldots\";\n }\n});\ndefineMacro(\"\\\\dotsc\", function (context) {\n const next = context.future().text; // \\dotsc uses \\extra@ but not \\extrap@, instead specially checking for\n // ';' and '.', but doesn't check for ','.\n\n if (next in spaceAfterDots && next !== ',') {\n return \"\\\\ldots\\\\,\";\n } else {\n return \"\\\\ldots\";\n }\n});\ndefineMacro(\"\\\\cdots\", function (context) {\n const next = context.future().text;\n\n if (next in spaceAfterDots) {\n return \"\\\\@cdots\\\\,\";\n } else {\n return \"\\\\@cdots\";\n }\n});\ndefineMacro(\"\\\\dotsb\", \"\\\\cdots\");\ndefineMacro(\"\\\\dotsm\", \"\\\\cdots\");\ndefineMacro(\"\\\\dotsi\", \"\\\\!\\\\cdots\"); // amsmath doesn't actually define \\dotsx, but \\dots followed by a macro\n// starting with \\DOTSX implies \\dotso, and then \\extra@ detects this case\n// and forces the added `\\,`.\n\ndefineMacro(\"\\\\dotsx\", \"\\\\ldots\\\\,\"); // \\let\\DOTSI\\relax\n// \\let\\DOTSB\\relax\n// \\let\\DOTSX\\relax\n\ndefineMacro(\"\\\\DOTSI\", \"\\\\relax\");\ndefineMacro(\"\\\\DOTSB\", \"\\\\relax\");\ndefineMacro(\"\\\\DOTSX\", \"\\\\relax\"); // Spacing, based on amsmath.sty's override of LaTeX defaults\n// \\DeclareRobustCommand{\\tmspace}[3]{%\n// \\ifmmode\\mskip#1#2\\else\\kern#1#3\\fi\\relax}\n\ndefineMacro(\"\\\\tmspace\", \"\\\\TextOrMath{\\\\kern#1#3}{\\\\mskip#1#2}\\\\relax\"); // \\renewcommand{\\,}{\\tmspace+\\thinmuskip{.1667em}}\n// TODO: math mode should use \\thinmuskip\n\ndefineMacro(\"\\\\,\", \"\\\\tmspace+{3mu}{.1667em}\"); // \\let\\thinspace\\,\n\ndefineMacro(\"\\\\thinspace\", \"\\\\,\"); // \\def\\>{\\mskip\\medmuskip}\n// \\renewcommand{\\:}{\\tmspace+\\medmuskip{.2222em}}\n// TODO: \\> and math mode of \\: should use \\medmuskip = 4mu plus 2mu minus 4mu\n\ndefineMacro(\"\\\\>\", \"\\\\mskip{4mu}\");\ndefineMacro(\"\\\\:\", \"\\\\tmspace+{4mu}{.2222em}\"); // \\let\\medspace\\:\n\ndefineMacro(\"\\\\medspace\", \"\\\\:\"); // \\renewcommand{\\;}{\\tmspace+\\thickmuskip{.2777em}}\n// TODO: math mode should use \\thickmuskip = 5mu plus 5mu\n\ndefineMacro(\"\\\\;\", \"\\\\tmspace+{5mu}{.2777em}\"); // \\let\\thickspace\\;\n\ndefineMacro(\"\\\\thickspace\", \"\\\\;\"); // \\renewcommand{\\!}{\\tmspace-\\thinmuskip{.1667em}}\n// TODO: math mode should use \\thinmuskip\n\ndefineMacro(\"\\\\!\", \"\\\\tmspace-{3mu}{.1667em}\"); // \\let\\negthinspace\\!\n\ndefineMacro(\"\\\\negthinspace\", \"\\\\!\"); // \\newcommand{\\negmedspace}{\\tmspace-\\medmuskip{.2222em}}\n// TODO: math mode should use \\medmuskip\n\ndefineMacro(\"\\\\negmedspace\", \"\\\\tmspace-{4mu}{.2222em}\"); // \\newcommand{\\negthickspace}{\\tmspace-\\thickmuskip{.2777em}}\n// TODO: math mode should use \\thickmuskip\n\ndefineMacro(\"\\\\negthickspace\", \"\\\\tmspace-{5mu}{.277em}\"); // \\def\\enspace{\\kern.5em }\n\ndefineMacro(\"\\\\enspace\", \"\\\\kern.5em \"); // \\def\\enskip{\\hskip.5em\\relax}\n\ndefineMacro(\"\\\\enskip\", \"\\\\hskip.5em\\\\relax\"); // \\def\\quad{\\hskip1em\\relax}\n\ndefineMacro(\"\\\\quad\", \"\\\\hskip1em\\\\relax\"); // \\def\\qquad{\\hskip2em\\relax}\n\ndefineMacro(\"\\\\qquad\", \"\\\\hskip2em\\\\relax\"); // \\tag@in@display form of \\tag\n\ndefineMacro(\"\\\\tag\", \"\\\\@ifstar\\\\tag@literal\\\\tag@paren\");\ndefineMacro(\"\\\\tag@paren\", \"\\\\tag@literal{({#1})}\");\ndefineMacro(\"\\\\tag@literal\", context => {\n if (context.macros.get(\"\\\\df@tag\")) {\n throw new src_ParseError(\"Multiple \\\\tag\");\n }\n\n return \"\\\\gdef\\\\df@tag{\\\\text{#1}}\";\n}); // \\renewcommand{\\bmod}{\\nonscript\\mskip-\\medmuskip\\mkern5mu\\mathbin\n// {\\operator@font mod}\\penalty900\n// \\mkern5mu\\nonscript\\mskip-\\medmuskip}\n// \\newcommand{\\pod}[1]{\\allowbreak\n// \\if@display\\mkern18mu\\else\\mkern8mu\\fi(#1)}\n// \\renewcommand{\\pmod}[1]{\\pod{{\\operator@font mod}\\mkern6mu#1}}\n// \\newcommand{\\mod}[1]{\\allowbreak\\if@display\\mkern18mu\n// \\else\\mkern12mu\\fi{\\operator@font mod}\\,\\,#1}\n// TODO: math mode should use \\medmuskip = 4mu plus 2mu minus 4mu\n\ndefineMacro(\"\\\\bmod\", \"\\\\mathchoice{\\\\mskip1mu}{\\\\mskip1mu}{\\\\mskip5mu}{\\\\mskip5mu}\" + \"\\\\mathbin{\\\\rm mod}\" + \"\\\\mathchoice{\\\\mskip1mu}{\\\\mskip1mu}{\\\\mskip5mu}{\\\\mskip5mu}\");\ndefineMacro(\"\\\\pod\", \"\\\\allowbreak\" + \"\\\\mathchoice{\\\\mkern18mu}{\\\\mkern8mu}{\\\\mkern8mu}{\\\\mkern8mu}(#1)\");\ndefineMacro(\"\\\\pmod\", \"\\\\pod{{\\\\rm mod}\\\\mkern6mu#1}\");\ndefineMacro(\"\\\\mod\", \"\\\\allowbreak\" + \"\\\\mathchoice{\\\\mkern18mu}{\\\\mkern12mu}{\\\\mkern12mu}{\\\\mkern12mu}\" + \"{\\\\rm mod}\\\\,\\\\,#1\"); //////////////////////////////////////////////////////////////////////\n// LaTeX source2e\n// \\expandafter\\let\\expandafter\\@normalcr\n// \\csname\\expandafter\\@gobble\\string\\\\ \\endcsname\n// \\DeclareRobustCommand\\newline{\\@normalcr\\relax}\n\ndefineMacro(\"\\\\newline\", \"\\\\\\\\\\\\relax\"); // \\def\\TeX{T\\kern-.1667em\\lower.5ex\\hbox{E}\\kern-.125emX\\@}\n// TODO: Doesn't normally work in math mode because \\@ fails. KaTeX doesn't\n// support \\@ yet, so that's omitted, and we add \\text so that the result\n// doesn't look funny in math mode.\n\ndefineMacro(\"\\\\TeX\", \"\\\\textrm{\\\\html@mathml{\" + \"T\\\\kern-.1667em\\\\raisebox{-.5ex}{E}\\\\kern-.125emX\" + \"}{TeX}}\"); // \\DeclareRobustCommand{\\LaTeX}{L\\kern-.36em%\n// {\\sbox\\z@ T%\n// \\vbox to\\ht\\z@{\\hbox{\\check@mathfonts\n// \\fontsize\\sf@size\\z@\n// \\math@fontsfalse\\selectfont\n// A}%\n// \\vss}%\n// }%\n// \\kern-.15em%\n// \\TeX}\n// This code aligns the top of the A with the T (from the perspective of TeX's\n// boxes, though visually the A appears to extend above slightly).\n// We compute the corresponding \\raisebox when A is rendered in \\normalsize\n// \\scriptstyle, which has a scale factor of 0.7 (see Options.js).\n\nconst latexRaiseA = makeEm(fontMetricsData[\"Main-Regular\"][\"T\".charCodeAt(0)][1] - 0.7 * fontMetricsData[\"Main-Regular\"][\"A\".charCodeAt(0)][1]);\ndefineMacro(\"\\\\LaTeX\", \"\\\\textrm{\\\\html@mathml{\" + (\"L\\\\kern-.36em\\\\raisebox{\" + latexRaiseA + \"}{\\\\scriptstyle A}\") + \"\\\\kern-.15em\\\\TeX}{LaTeX}}\"); // New KaTeX logo based on tweaking LaTeX logo\n\ndefineMacro(\"\\\\KaTeX\", \"\\\\textrm{\\\\html@mathml{\" + (\"K\\\\kern-.17em\\\\raisebox{\" + latexRaiseA + \"}{\\\\scriptstyle A}\") + \"\\\\kern-.15em\\\\TeX}{KaTeX}}\"); // \\DeclareRobustCommand\\hspace{\\@ifstar\\@hspacer\\@hspace}\n// \\def\\@hspace#1{\\hskip #1\\relax}\n// \\def\\@hspacer#1{\\vrule \\@width\\z@\\nobreak\n// \\hskip #1\\hskip \\z@skip}\n\ndefineMacro(\"\\\\hspace\", \"\\\\@ifstar\\\\@hspacer\\\\@hspace\");\ndefineMacro(\"\\\\@hspace\", \"\\\\hskip #1\\\\relax\");\ndefineMacro(\"\\\\@hspacer\", \"\\\\rule{0pt}{0pt}\\\\hskip #1\\\\relax\"); //////////////////////////////////////////////////////////////////////\n// mathtools.sty\n//\\providecommand\\ordinarycolon{:}\n\ndefineMacro(\"\\\\ordinarycolon\", \":\"); //\\def\\vcentcolon{\\mathrel{\\mathop\\ordinarycolon}}\n//TODO(edemaine): Not yet centered. Fix via \\raisebox or #726\n\ndefineMacro(\"\\\\vcentcolon\", \"\\\\mathrel{\\\\mathop\\\\ordinarycolon}\"); // \\providecommand*\\dblcolon{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}\n\ndefineMacro(\"\\\\dblcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-.9mu}\\\\vcentcolon}}\" + \"{\\\\mathop{\\\\char\\\"2237}}\"); // \\providecommand*\\coloneqq{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}\n\ndefineMacro(\"\\\\coloneqq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}=}}\" + \"{\\\\mathop{\\\\char\\\"2254}}\"); // ≔\n// \\providecommand*\\Coloneqq{\\dblcolon\\mathrel{\\mkern-1.2mu}=}\n\ndefineMacro(\"\\\\Coloneqq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}=}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"3d}}\"); // \\providecommand*\\coloneq{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}\n\ndefineMacro(\"\\\\coloneq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}}}\" + \"{\\\\mathop{\\\\char\\\"3a\\\\char\\\"2212}}\"); // \\providecommand*\\Coloneq{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}\n\ndefineMacro(\"\\\\Coloneq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"2212}}\"); // \\providecommand*\\eqqcolon{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}\n\ndefineMacro(\"\\\\eqqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{=\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}}\" + \"{\\\\mathop{\\\\char\\\"2255}}\"); // ≕\n// \\providecommand*\\Eqqcolon{=\\mathrel{\\mkern-1.2mu}\\dblcolon}\n\ndefineMacro(\"\\\\Eqqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{=\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}}\" + \"{\\\\mathop{\\\\char\\\"3d\\\\char\\\"2237}}\"); // \\providecommand*\\eqcolon{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}\n\ndefineMacro(\"\\\\eqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}}\" + \"{\\\\mathop{\\\\char\\\"2239}}\"); // \\providecommand*\\Eqcolon{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}\n\ndefineMacro(\"\\\\Eqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}}\" + \"{\\\\mathop{\\\\char\\\"2212\\\\char\\\"2237}}\"); // \\providecommand*\\colonapprox{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}\n\ndefineMacro(\"\\\\colonapprox\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx}}\" + \"{\\\\mathop{\\\\char\\\"3a\\\\char\\\"2248}}\"); // \\providecommand*\\Colonapprox{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}\n\ndefineMacro(\"\\\\Colonapprox\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"2248}}\"); // \\providecommand*\\colonsim{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}\n\ndefineMacro(\"\\\\colonsim\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim}}\" + \"{\\\\mathop{\\\\char\\\"3a\\\\char\\\"223c}}\"); // \\providecommand*\\Colonsim{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}\n\ndefineMacro(\"\\\\Colonsim\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"223c}}\"); // Some Unicode characters are implemented with macros to mathtools functions.\n\ndefineMacro(\"\\u2237\", \"\\\\dblcolon\"); // ::\n\ndefineMacro(\"\\u2239\", \"\\\\eqcolon\"); // -:\n\ndefineMacro(\"\\u2254\", \"\\\\coloneqq\"); // :=\n\ndefineMacro(\"\\u2255\", \"\\\\eqqcolon\"); // =:\n\ndefineMacro(\"\\u2A74\", \"\\\\Coloneqq\"); // ::=\n//////////////////////////////////////////////////////////////////////\n// colonequals.sty\n// Alternate names for mathtools's macros:\n\ndefineMacro(\"\\\\ratio\", \"\\\\vcentcolon\");\ndefineMacro(\"\\\\coloncolon\", \"\\\\dblcolon\");\ndefineMacro(\"\\\\colonequals\", \"\\\\coloneqq\");\ndefineMacro(\"\\\\coloncolonequals\", \"\\\\Coloneqq\");\ndefineMacro(\"\\\\equalscolon\", \"\\\\eqqcolon\");\ndefineMacro(\"\\\\equalscoloncolon\", \"\\\\Eqqcolon\");\ndefineMacro(\"\\\\colonminus\", \"\\\\coloneq\");\ndefineMacro(\"\\\\coloncolonminus\", \"\\\\Coloneq\");\ndefineMacro(\"\\\\minuscolon\", \"\\\\eqcolon\");\ndefineMacro(\"\\\\minuscoloncolon\", \"\\\\Eqcolon\"); // \\colonapprox name is same in mathtools and colonequals.\n\ndefineMacro(\"\\\\coloncolonapprox\", \"\\\\Colonapprox\"); // \\colonsim name is same in mathtools and colonequals.\n\ndefineMacro(\"\\\\coloncolonsim\", \"\\\\Colonsim\"); // Additional macros, implemented by analogy with mathtools definitions:\n\ndefineMacro(\"\\\\simcolon\", \"\\\\mathrel{\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\");\ndefineMacro(\"\\\\simcoloncolon\", \"\\\\mathrel{\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\");\ndefineMacro(\"\\\\approxcolon\", \"\\\\mathrel{\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\");\ndefineMacro(\"\\\\approxcoloncolon\", \"\\\\mathrel{\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\"); // Present in newtxmath, pxfonts and txfonts\n\ndefineMacro(\"\\\\notni\", \"\\\\html@mathml{\\\\not\\\\ni}{\\\\mathrel{\\\\char`\\u220C}}\");\ndefineMacro(\"\\\\limsup\", \"\\\\DOTSB\\\\operatorname*{lim\\\\,sup}\");\ndefineMacro(\"\\\\liminf\", \"\\\\DOTSB\\\\operatorname*{lim\\\\,inf}\"); //////////////////////////////////////////////////////////////////////\n// From amsopn.sty\n\ndefineMacro(\"\\\\injlim\", \"\\\\DOTSB\\\\operatorname*{inj\\\\,lim}\");\ndefineMacro(\"\\\\projlim\", \"\\\\DOTSB\\\\operatorname*{proj\\\\,lim}\");\ndefineMacro(\"\\\\varlimsup\", \"\\\\DOTSB\\\\operatorname*{\\\\overline{lim}}\");\ndefineMacro(\"\\\\varliminf\", \"\\\\DOTSB\\\\operatorname*{\\\\underline{lim}}\");\ndefineMacro(\"\\\\varinjlim\", \"\\\\DOTSB\\\\operatorname*{\\\\underrightarrow{lim}}\");\ndefineMacro(\"\\\\varprojlim\", \"\\\\DOTSB\\\\operatorname*{\\\\underleftarrow{lim}}\"); //////////////////////////////////////////////////////////////////////\n// MathML alternates for KaTeX glyphs in the Unicode private area\n\ndefineMacro(\"\\\\gvertneqq\", \"\\\\html@mathml{\\\\@gvertneqq}{\\u2269}\");\ndefineMacro(\"\\\\lvertneqq\", \"\\\\html@mathml{\\\\@lvertneqq}{\\u2268}\");\ndefineMacro(\"\\\\ngeqq\", \"\\\\html@mathml{\\\\@ngeqq}{\\u2271}\");\ndefineMacro(\"\\\\ngeqslant\", \"\\\\html@mathml{\\\\@ngeqslant}{\\u2271}\");\ndefineMacro(\"\\\\nleqq\", \"\\\\html@mathml{\\\\@nleqq}{\\u2270}\");\ndefineMacro(\"\\\\nleqslant\", \"\\\\html@mathml{\\\\@nleqslant}{\\u2270}\");\ndefineMacro(\"\\\\nshortmid\", \"\\\\html@mathml{\\\\@nshortmid}{∤}\");\ndefineMacro(\"\\\\nshortparallel\", \"\\\\html@mathml{\\\\@nshortparallel}{∦}\");\ndefineMacro(\"\\\\nsubseteqq\", \"\\\\html@mathml{\\\\@nsubseteqq}{\\u2288}\");\ndefineMacro(\"\\\\nsupseteqq\", \"\\\\html@mathml{\\\\@nsupseteqq}{\\u2289}\");\ndefineMacro(\"\\\\varsubsetneq\", \"\\\\html@mathml{\\\\@varsubsetneq}{⊊}\");\ndefineMacro(\"\\\\varsubsetneqq\", \"\\\\html@mathml{\\\\@varsubsetneqq}{⫋}\");\ndefineMacro(\"\\\\varsupsetneq\", \"\\\\html@mathml{\\\\@varsupsetneq}{⊋}\");\ndefineMacro(\"\\\\varsupsetneqq\", \"\\\\html@mathml{\\\\@varsupsetneqq}{⫌}\");\ndefineMacro(\"\\\\imath\", \"\\\\html@mathml{\\\\@imath}{\\u0131}\");\ndefineMacro(\"\\\\jmath\", \"\\\\html@mathml{\\\\@jmath}{\\u0237}\"); //////////////////////////////////////////////////////////////////////\n// stmaryrd and semantic\n// The stmaryrd and semantic packages render the next four items by calling a\n// glyph. Those glyphs do not exist in the KaTeX fonts. Hence the macros.\n\ndefineMacro(\"\\\\llbracket\", \"\\\\html@mathml{\" + \"\\\\mathopen{[\\\\mkern-3.2mu[}}\" + \"{\\\\mathopen{\\\\char`\\u27e6}}\");\ndefineMacro(\"\\\\rrbracket\", \"\\\\html@mathml{\" + \"\\\\mathclose{]\\\\mkern-3.2mu]}}\" + \"{\\\\mathclose{\\\\char`\\u27e7}}\");\ndefineMacro(\"\\u27e6\", \"\\\\llbracket\"); // blackboard bold [\n\ndefineMacro(\"\\u27e7\", \"\\\\rrbracket\"); // blackboard bold ]\n\ndefineMacro(\"\\\\lBrace\", \"\\\\html@mathml{\" + \"\\\\mathopen{\\\\{\\\\mkern-3.2mu[}}\" + \"{\\\\mathopen{\\\\char`\\u2983}}\");\ndefineMacro(\"\\\\rBrace\", \"\\\\html@mathml{\" + \"\\\\mathclose{]\\\\mkern-3.2mu\\\\}}}\" + \"{\\\\mathclose{\\\\char`\\u2984}}\");\ndefineMacro(\"\\u2983\", \"\\\\lBrace\"); // blackboard bold {\n\ndefineMacro(\"\\u2984\", \"\\\\rBrace\"); // blackboard bold }\n// TODO: Create variable sized versions of the last two items. I believe that\n// will require new font glyphs.\n// The stmaryrd function `\\minuso` provides a \"Plimsoll\" symbol that\n// superimposes the characters \\circ and \\mathminus. Used in chemistry.\n\ndefineMacro(\"\\\\minuso\", \"\\\\mathbin{\\\\html@mathml{\" + \"{\\\\mathrlap{\\\\mathchoice{\\\\kern{0.145em}}{\\\\kern{0.145em}}\" + \"{\\\\kern{0.1015em}}{\\\\kern{0.0725em}}\\\\circ}{-}}}\" + \"{\\\\char`⦵}}\");\ndefineMacro(\"⦵\", \"\\\\minuso\"); //////////////////////////////////////////////////////////////////////\n// texvc.sty\n// The texvc package contains macros available in mediawiki pages.\n// We omit the functions deprecated at\n// https://en.wikipedia.org/wiki/Help:Displaying_a_formula#Deprecated_syntax\n// We also omit texvc's \\O, which conflicts with \\text{\\O}\n\ndefineMacro(\"\\\\darr\", \"\\\\downarrow\");\ndefineMacro(\"\\\\dArr\", \"\\\\Downarrow\");\ndefineMacro(\"\\\\Darr\", \"\\\\Downarrow\");\ndefineMacro(\"\\\\lang\", \"\\\\langle\");\ndefineMacro(\"\\\\rang\", \"\\\\rangle\");\ndefineMacro(\"\\\\uarr\", \"\\\\uparrow\");\ndefineMacro(\"\\\\uArr\", \"\\\\Uparrow\");\ndefineMacro(\"\\\\Uarr\", \"\\\\Uparrow\");\ndefineMacro(\"\\\\N\", \"\\\\mathbb{N}\");\ndefineMacro(\"\\\\R\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\Z\", \"\\\\mathbb{Z}\");\ndefineMacro(\"\\\\alef\", \"\\\\aleph\");\ndefineMacro(\"\\\\alefsym\", \"\\\\aleph\");\ndefineMacro(\"\\\\Alpha\", \"\\\\mathrm{A}\");\ndefineMacro(\"\\\\Beta\", \"\\\\mathrm{B}\");\ndefineMacro(\"\\\\bull\", \"\\\\bullet\");\ndefineMacro(\"\\\\Chi\", \"\\\\mathrm{X}\");\ndefineMacro(\"\\\\clubs\", \"\\\\clubsuit\");\ndefineMacro(\"\\\\cnums\", \"\\\\mathbb{C}\");\ndefineMacro(\"\\\\Complex\", \"\\\\mathbb{C}\");\ndefineMacro(\"\\\\Dagger\", \"\\\\ddagger\");\ndefineMacro(\"\\\\diamonds\", \"\\\\diamondsuit\");\ndefineMacro(\"\\\\empty\", \"\\\\emptyset\");\ndefineMacro(\"\\\\Epsilon\", \"\\\\mathrm{E}\");\ndefineMacro(\"\\\\Eta\", \"\\\\mathrm{H}\");\ndefineMacro(\"\\\\exist\", \"\\\\exists\");\ndefineMacro(\"\\\\harr\", \"\\\\leftrightarrow\");\ndefineMacro(\"\\\\hArr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\Harr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\hearts\", \"\\\\heartsuit\");\ndefineMacro(\"\\\\image\", \"\\\\Im\");\ndefineMacro(\"\\\\infin\", \"\\\\infty\");\ndefineMacro(\"\\\\Iota\", \"\\\\mathrm{I}\");\ndefineMacro(\"\\\\isin\", \"\\\\in\");\ndefineMacro(\"\\\\Kappa\", \"\\\\mathrm{K}\");\ndefineMacro(\"\\\\larr\", \"\\\\leftarrow\");\ndefineMacro(\"\\\\lArr\", \"\\\\Leftarrow\");\ndefineMacro(\"\\\\Larr\", \"\\\\Leftarrow\");\ndefineMacro(\"\\\\lrarr\", \"\\\\leftrightarrow\");\ndefineMacro(\"\\\\lrArr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\Lrarr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\Mu\", \"\\\\mathrm{M}\");\ndefineMacro(\"\\\\natnums\", \"\\\\mathbb{N}\");\ndefineMacro(\"\\\\Nu\", \"\\\\mathrm{N}\");\ndefineMacro(\"\\\\Omicron\", \"\\\\mathrm{O}\");\ndefineMacro(\"\\\\plusmn\", \"\\\\pm\");\ndefineMacro(\"\\\\rarr\", \"\\\\rightarrow\");\ndefineMacro(\"\\\\rArr\", \"\\\\Rightarrow\");\ndefineMacro(\"\\\\Rarr\", \"\\\\Rightarrow\");\ndefineMacro(\"\\\\real\", \"\\\\Re\");\ndefineMacro(\"\\\\reals\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\Reals\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\Rho\", \"\\\\mathrm{P}\");\ndefineMacro(\"\\\\sdot\", \"\\\\cdot\");\ndefineMacro(\"\\\\sect\", \"\\\\S\");\ndefineMacro(\"\\\\spades\", \"\\\\spadesuit\");\ndefineMacro(\"\\\\sub\", \"\\\\subset\");\ndefineMacro(\"\\\\sube\", \"\\\\subseteq\");\ndefineMacro(\"\\\\supe\", \"\\\\supseteq\");\ndefineMacro(\"\\\\Tau\", \"\\\\mathrm{T}\");\ndefineMacro(\"\\\\thetasym\", \"\\\\vartheta\"); // TODO: defineMacro(\"\\\\varcoppa\", \"\\\\\\mbox{\\\\coppa}\");\n\ndefineMacro(\"\\\\weierp\", \"\\\\wp\");\ndefineMacro(\"\\\\Zeta\", \"\\\\mathrm{Z}\"); //////////////////////////////////////////////////////////////////////\n// statmath.sty\n// https://ctan.math.illinois.edu/macros/latex/contrib/statmath/statmath.pdf\n\ndefineMacro(\"\\\\argmin\", \"\\\\DOTSB\\\\operatorname*{arg\\\\,min}\");\ndefineMacro(\"\\\\argmax\", \"\\\\DOTSB\\\\operatorname*{arg\\\\,max}\");\ndefineMacro(\"\\\\plim\", \"\\\\DOTSB\\\\mathop{\\\\operatorname{plim}}\\\\limits\"); //////////////////////////////////////////////////////////////////////\n// braket.sty\n// http://ctan.math.washington.edu/tex-archive/macros/latex/contrib/braket/braket.pdf\n\ndefineMacro(\"\\\\bra\", \"\\\\mathinner{\\\\langle{#1}|}\");\ndefineMacro(\"\\\\ket\", \"\\\\mathinner{|{#1}\\\\rangle}\");\ndefineMacro(\"\\\\braket\", \"\\\\mathinner{\\\\langle{#1}\\\\rangle}\");\ndefineMacro(\"\\\\Bra\", \"\\\\left\\\\langle#1\\\\right|\");\ndefineMacro(\"\\\\Ket\", \"\\\\left|#1\\\\right\\\\rangle\");\n\nconst braketHelper = one => context => {\n const left = context.consumeArg().tokens;\n const middle = context.consumeArg().tokens;\n const middleDouble = context.consumeArg().tokens;\n const right = context.consumeArg().tokens;\n const oldMiddle = context.macros.get(\"|\");\n const oldMiddleDouble = context.macros.get(\"\\\\|\");\n context.macros.beginGroup();\n\n const midMacro = double => context => {\n if (one) {\n // Only modify the first instance of | or \\|\n context.macros.set(\"|\", oldMiddle);\n\n if (middleDouble.length) {\n context.macros.set(\"\\\\|\", oldMiddleDouble);\n }\n }\n\n let doubled = double;\n\n if (!double && middleDouble.length) {\n // Mimic \\@ifnextchar\n const nextToken = context.future();\n\n if (nextToken.text === \"|\") {\n context.popToken();\n doubled = true;\n }\n }\n\n return {\n tokens: doubled ? middleDouble : middle,\n numArgs: 0\n };\n };\n\n context.macros.set(\"|\", midMacro(false));\n\n if (middleDouble.length) {\n context.macros.set(\"\\\\|\", midMacro(true));\n }\n\n const arg = context.consumeArg().tokens;\n const expanded = context.expandTokens([...right, ...arg, ...left // reversed\n ]);\n context.macros.endGroup();\n return {\n tokens: expanded.reverse(),\n numArgs: 0\n };\n};\n\ndefineMacro(\"\\\\bra@ket\", braketHelper(false));\ndefineMacro(\"\\\\bra@set\", braketHelper(true));\ndefineMacro(\"\\\\Braket\", \"\\\\bra@ket{\\\\left\\\\langle}\" + \"{\\\\,\\\\middle\\\\vert\\\\,}{\\\\,\\\\middle\\\\vert\\\\,}{\\\\right\\\\rangle}\");\ndefineMacro(\"\\\\Set\", \"\\\\bra@set{\\\\left\\\\{\\\\:}\" + \"{\\\\;\\\\middle\\\\vert\\\\;}{\\\\;\\\\middle\\\\Vert\\\\;}{\\\\:\\\\right\\\\}}\");\ndefineMacro(\"\\\\set\", \"\\\\bra@set{\\\\{\\\\,}{\\\\mid}{}{\\\\,\\\\}}\"); // has no support for special || or \\|\n//////////////////////////////////////////////////////////////////////\n// actuarialangle.dtx\n\ndefineMacro(\"\\\\angln\", \"{\\\\angl n}\"); // Custom Khan Academy colors, should be moved to an optional package\n\ndefineMacro(\"\\\\blue\", \"\\\\textcolor{##6495ed}{#1}\");\ndefineMacro(\"\\\\orange\", \"\\\\textcolor{##ffa500}{#1}\");\ndefineMacro(\"\\\\pink\", \"\\\\textcolor{##ff00af}{#1}\");\ndefineMacro(\"\\\\red\", \"\\\\textcolor{##df0030}{#1}\");\ndefineMacro(\"\\\\green\", \"\\\\textcolor{##28ae7b}{#1}\");\ndefineMacro(\"\\\\gray\", \"\\\\textcolor{gray}{#1}\");\ndefineMacro(\"\\\\purple\", \"\\\\textcolor{##9d38bd}{#1}\");\ndefineMacro(\"\\\\blueA\", \"\\\\textcolor{##ccfaff}{#1}\");\ndefineMacro(\"\\\\blueB\", \"\\\\textcolor{##80f6ff}{#1}\");\ndefineMacro(\"\\\\blueC\", \"\\\\textcolor{##63d9ea}{#1}\");\ndefineMacro(\"\\\\blueD\", \"\\\\textcolor{##11accd}{#1}\");\ndefineMacro(\"\\\\blueE\", \"\\\\textcolor{##0c7f99}{#1}\");\ndefineMacro(\"\\\\tealA\", \"\\\\textcolor{##94fff5}{#1}\");\ndefineMacro(\"\\\\tealB\", \"\\\\textcolor{##26edd5}{#1}\");\ndefineMacro(\"\\\\tealC\", \"\\\\textcolor{##01d1c1}{#1}\");\ndefineMacro(\"\\\\tealD\", \"\\\\textcolor{##01a995}{#1}\");\ndefineMacro(\"\\\\tealE\", \"\\\\textcolor{##208170}{#1}\");\ndefineMacro(\"\\\\greenA\", \"\\\\textcolor{##b6ffb0}{#1}\");\ndefineMacro(\"\\\\greenB\", \"\\\\textcolor{##8af281}{#1}\");\ndefineMacro(\"\\\\greenC\", \"\\\\textcolor{##74cf70}{#1}\");\ndefineMacro(\"\\\\greenD\", \"\\\\textcolor{##1fab54}{#1}\");\ndefineMacro(\"\\\\greenE\", \"\\\\textcolor{##0d923f}{#1}\");\ndefineMacro(\"\\\\goldA\", \"\\\\textcolor{##ffd0a9}{#1}\");\ndefineMacro(\"\\\\goldB\", \"\\\\textcolor{##ffbb71}{#1}\");\ndefineMacro(\"\\\\goldC\", \"\\\\textcolor{##ff9c39}{#1}\");\ndefineMacro(\"\\\\goldD\", \"\\\\textcolor{##e07d10}{#1}\");\ndefineMacro(\"\\\\goldE\", \"\\\\textcolor{##a75a05}{#1}\");\ndefineMacro(\"\\\\redA\", \"\\\\textcolor{##fca9a9}{#1}\");\ndefineMacro(\"\\\\redB\", \"\\\\textcolor{##ff8482}{#1}\");\ndefineMacro(\"\\\\redC\", \"\\\\textcolor{##f9685d}{#1}\");\ndefineMacro(\"\\\\redD\", \"\\\\textcolor{##e84d39}{#1}\");\ndefineMacro(\"\\\\redE\", \"\\\\textcolor{##bc2612}{#1}\");\ndefineMacro(\"\\\\maroonA\", \"\\\\textcolor{##ffbde0}{#1}\");\ndefineMacro(\"\\\\maroonB\", \"\\\\textcolor{##ff92c6}{#1}\");\ndefineMacro(\"\\\\maroonC\", \"\\\\textcolor{##ed5fa6}{#1}\");\ndefineMacro(\"\\\\maroonD\", \"\\\\textcolor{##ca337c}{#1}\");\ndefineMacro(\"\\\\maroonE\", \"\\\\textcolor{##9e034e}{#1}\");\ndefineMacro(\"\\\\purpleA\", \"\\\\textcolor{##ddd7ff}{#1}\");\ndefineMacro(\"\\\\purpleB\", \"\\\\textcolor{##c6b9fc}{#1}\");\ndefineMacro(\"\\\\purpleC\", \"\\\\textcolor{##aa87ff}{#1}\");\ndefineMacro(\"\\\\purpleD\", \"\\\\textcolor{##7854ab}{#1}\");\ndefineMacro(\"\\\\purpleE\", \"\\\\textcolor{##543b78}{#1}\");\ndefineMacro(\"\\\\mintA\", \"\\\\textcolor{##f5f9e8}{#1}\");\ndefineMacro(\"\\\\mintB\", \"\\\\textcolor{##edf2df}{#1}\");\ndefineMacro(\"\\\\mintC\", \"\\\\textcolor{##e0e5cc}{#1}\");\ndefineMacro(\"\\\\grayA\", \"\\\\textcolor{##f6f7f7}{#1}\");\ndefineMacro(\"\\\\grayB\", \"\\\\textcolor{##f0f1f2}{#1}\");\ndefineMacro(\"\\\\grayC\", \"\\\\textcolor{##e3e5e6}{#1}\");\ndefineMacro(\"\\\\grayD\", \"\\\\textcolor{##d6d8da}{#1}\");\ndefineMacro(\"\\\\grayE\", \"\\\\textcolor{##babec2}{#1}\");\ndefineMacro(\"\\\\grayF\", \"\\\\textcolor{##888d93}{#1}\");\ndefineMacro(\"\\\\grayG\", \"\\\\textcolor{##626569}{#1}\");\ndefineMacro(\"\\\\grayH\", \"\\\\textcolor{##3b3e40}{#1}\");\ndefineMacro(\"\\\\grayI\", \"\\\\textcolor{##21242c}{#1}\");\ndefineMacro(\"\\\\kaBlue\", \"\\\\textcolor{##314453}{#1}\");\ndefineMacro(\"\\\\kaGreen\", \"\\\\textcolor{##71B307}{#1}\");\n;// CONCATENATED MODULE: ./src/MacroExpander.js\n/**\n * This file contains the “gullet” where macros are expanded\n * until only non-macro tokens remain.\n */\n\n\n\n\n\n\n\n// List of commands that act like macros but aren't defined as a macro,\n// function, or symbol. Used in `isDefined`.\nconst implicitCommands = {\n \"^\": true,\n // Parser.js\n \"_\": true,\n // Parser.js\n \"\\\\limits\": true,\n // Parser.js\n \"\\\\nolimits\": true // Parser.js\n\n};\nclass MacroExpander {\n constructor(input, settings, mode) {\n this.settings = void 0;\n this.expansionCount = void 0;\n this.lexer = void 0;\n this.macros = void 0;\n this.stack = void 0;\n this.mode = void 0;\n this.settings = settings;\n this.expansionCount = 0;\n this.feed(input); // Make new global namespace\n\n this.macros = new Namespace(src_macros, settings.macros);\n this.mode = mode;\n this.stack = []; // contains tokens in REVERSE order\n }\n /**\n * Feed a new input string to the same MacroExpander\n * (with existing macros etc.).\n */\n\n\n feed(input) {\n this.lexer = new Lexer(input, this.settings);\n }\n /**\n * Switches between \"text\" and \"math\" modes.\n */\n\n\n switchMode(newMode) {\n this.mode = newMode;\n }\n /**\n * Start a new group nesting within all namespaces.\n */\n\n\n beginGroup() {\n this.macros.beginGroup();\n }\n /**\n * End current group nesting within all namespaces.\n */\n\n\n endGroup() {\n this.macros.endGroup();\n }\n /**\n * Ends all currently nested groups (if any), restoring values before the\n * groups began. Useful in case of an error in the middle of parsing.\n */\n\n\n endGroups() {\n this.macros.endGroups();\n }\n /**\n * Returns the topmost token on the stack, without expanding it.\n * Similar in behavior to TeX's `\\futurelet`.\n */\n\n\n future() {\n if (this.stack.length === 0) {\n this.pushToken(this.lexer.lex());\n }\n\n return this.stack[this.stack.length - 1];\n }\n /**\n * Remove and return the next unexpanded token.\n */\n\n\n popToken() {\n this.future(); // ensure non-empty stack\n\n return this.stack.pop();\n }\n /**\n * Add a given token to the token stack. In particular, this get be used\n * to put back a token returned from one of the other methods.\n */\n\n\n pushToken(token) {\n this.stack.push(token);\n }\n /**\n * Append an array of tokens to the token stack.\n */\n\n\n pushTokens(tokens) {\n this.stack.push(...tokens);\n }\n /**\n * Find an macro argument without expanding tokens and append the array of\n * tokens to the token stack. Uses Token as a container for the result.\n */\n\n\n scanArgument(isOptional) {\n let start;\n let end;\n let tokens;\n\n if (isOptional) {\n this.consumeSpaces(); // \\@ifnextchar gobbles any space following it\n\n if (this.future().text !== \"[\") {\n return null;\n }\n\n start = this.popToken(); // don't include [ in tokens\n\n ({\n tokens,\n end\n } = this.consumeArg([\"]\"]));\n } else {\n ({\n tokens,\n start,\n end\n } = this.consumeArg());\n } // indicate the end of an argument\n\n\n this.pushToken(new Token(\"EOF\", end.loc));\n this.pushTokens(tokens);\n return start.range(end, \"\");\n }\n /**\n * Consume all following space tokens, without expansion.\n */\n\n\n consumeSpaces() {\n for (;;) {\n const token = this.future();\n\n if (token.text === \" \") {\n this.stack.pop();\n } else {\n break;\n }\n }\n }\n /**\n * Consume an argument from the token stream, and return the resulting array\n * of tokens and start/end token.\n */\n\n\n consumeArg(delims) {\n // The argument for a delimited parameter is the shortest (possibly\n // empty) sequence of tokens with properly nested {...} groups that is\n // followed ... by this particular list of non-parameter tokens.\n // The argument for an undelimited parameter is the next nonblank\n // token, unless that token is ‘{’, when the argument will be the\n // entire {...} group that follows.\n const tokens = [];\n const isDelimited = delims && delims.length > 0;\n\n if (!isDelimited) {\n // Ignore spaces between arguments. As the TeXbook says:\n // \"After you have said ‘\\def\\row#1#2{...}’, you are allowed to\n // put spaces between the arguments (e.g., ‘\\row x n’), because\n // TeX doesn’t use single spaces as undelimited arguments.\"\n this.consumeSpaces();\n }\n\n const start = this.future();\n let tok;\n let depth = 0;\n let match = 0;\n\n do {\n tok = this.popToken();\n tokens.push(tok);\n\n if (tok.text === \"{\") {\n ++depth;\n } else if (tok.text === \"}\") {\n --depth;\n\n if (depth === -1) {\n throw new src_ParseError(\"Extra }\", tok);\n }\n } else if (tok.text === \"EOF\") {\n throw new src_ParseError(\"Unexpected end of input in a macro argument\" + \", expected '\" + (delims && isDelimited ? delims[match] : \"}\") + \"'\", tok);\n }\n\n if (delims && isDelimited) {\n if ((depth === 0 || depth === 1 && delims[match] === \"{\") && tok.text === delims[match]) {\n ++match;\n\n if (match === delims.length) {\n // don't include delims in tokens\n tokens.splice(-match, match);\n break;\n }\n } else {\n match = 0;\n }\n }\n } while (depth !== 0 || isDelimited); // If the argument found ... has the form ‘{}’,\n // ... the outermost braces enclosing the argument are removed\n\n\n if (start.text === \"{\" && tokens[tokens.length - 1].text === \"}\") {\n tokens.pop();\n tokens.shift();\n }\n\n tokens.reverse(); // to fit in with stack order\n\n return {\n tokens,\n start,\n end: tok\n };\n }\n /**\n * Consume the specified number of (delimited) arguments from the token\n * stream and return the resulting array of arguments.\n */\n\n\n consumeArgs(numArgs, delimiters) {\n if (delimiters) {\n if (delimiters.length !== numArgs + 1) {\n throw new src_ParseError(\"The length of delimiters doesn't match the number of args!\");\n }\n\n const delims = delimiters[0];\n\n for (let i = 0; i < delims.length; i++) {\n const tok = this.popToken();\n\n if (delims[i] !== tok.text) {\n throw new src_ParseError(\"Use of the macro doesn't match its definition\", tok);\n }\n }\n }\n\n const args = [];\n\n for (let i = 0; i < numArgs; i++) {\n args.push(this.consumeArg(delimiters && delimiters[i + 1]).tokens);\n }\n\n return args;\n }\n /**\n * Increment `expansionCount` by the specified amount.\n * Throw an error if it exceeds `maxExpand`.\n */\n\n\n countExpansion(amount) {\n this.expansionCount += amount;\n\n if (this.expansionCount > this.settings.maxExpand) {\n throw new src_ParseError(\"Too many expansions: infinite loop or \" + \"need to increase maxExpand setting\");\n }\n }\n /**\n * Expand the next token only once if possible.\n *\n * If the token is expanded, the resulting tokens will be pushed onto\n * the stack in reverse order, and the number of such tokens will be\n * returned. This number might be zero or positive.\n *\n * If not, the return value is `false`, and the next token remains at the\n * top of the stack.\n *\n * In either case, the next token will be on the top of the stack,\n * or the stack will be empty (in case of empty expansion\n * and no other tokens).\n *\n * Used to implement `expandAfterFuture` and `expandNextToken`.\n *\n * If expandableOnly, only expandable tokens are expanded and\n * an undefined control sequence results in an error.\n */\n\n\n expandOnce(expandableOnly) {\n const topToken = this.popToken();\n const name = topToken.text;\n const expansion = !topToken.noexpand ? this._getExpansion(name) : null;\n\n if (expansion == null || expandableOnly && expansion.unexpandable) {\n if (expandableOnly && expansion == null && name[0] === \"\\\\\" && !this.isDefined(name)) {\n throw new src_ParseError(\"Undefined control sequence: \" + name);\n }\n\n this.pushToken(topToken);\n return false;\n }\n\n this.countExpansion(1);\n let tokens = expansion.tokens;\n const args = this.consumeArgs(expansion.numArgs, expansion.delimiters);\n\n if (expansion.numArgs) {\n // paste arguments in place of the placeholders\n tokens = tokens.slice(); // make a shallow copy\n\n for (let i = tokens.length - 1; i >= 0; --i) {\n let tok = tokens[i];\n\n if (tok.text === \"#\") {\n if (i === 0) {\n throw new src_ParseError(\"Incomplete placeholder at end of macro body\", tok);\n }\n\n tok = tokens[--i]; // next token on stack\n\n if (tok.text === \"#\") {\n // ## → #\n tokens.splice(i + 1, 1); // drop first #\n } else if (/^[1-9]$/.test(tok.text)) {\n // replace the placeholder with the indicated argument\n tokens.splice(i, 2, ...args[+tok.text - 1]);\n } else {\n throw new src_ParseError(\"Not a valid argument number\", tok);\n }\n }\n }\n } // Concatenate expansion onto top of stack.\n\n\n this.pushTokens(tokens);\n return tokens.length;\n }\n /**\n * Expand the next token only once (if possible), and return the resulting\n * top token on the stack (without removing anything from the stack).\n * Similar in behavior to TeX's `\\expandafter\\futurelet`.\n * Equivalent to expandOnce() followed by future().\n */\n\n\n expandAfterFuture() {\n this.expandOnce();\n return this.future();\n }\n /**\n * Recursively expand first token, then return first non-expandable token.\n */\n\n\n expandNextToken() {\n for (;;) {\n if (this.expandOnce() === false) {\n // fully expanded\n const token = this.stack.pop(); // the token after \\noexpand is interpreted as if its meaning\n // were ‘\\relax’\n\n if (token.treatAsRelax) {\n token.text = \"\\\\relax\";\n }\n\n return token;\n }\n } // Flow unable to figure out that this pathway is impossible.\n // https://github.com/facebook/flow/issues/4808\n\n\n throw new Error(); // eslint-disable-line no-unreachable\n }\n /**\n * Fully expand the given macro name and return the resulting list of\n * tokens, or return `undefined` if no such macro is defined.\n */\n\n\n expandMacro(name) {\n return this.macros.has(name) ? this.expandTokens([new Token(name)]) : undefined;\n }\n /**\n * Fully expand the given token stream and return the resulting list of\n * tokens. Note that the input tokens are in reverse order, but the\n * output tokens are in forward order.\n */\n\n\n expandTokens(tokens) {\n const output = [];\n const oldStackLength = this.stack.length;\n this.pushTokens(tokens);\n\n while (this.stack.length > oldStackLength) {\n // Expand only expandable tokens\n if (this.expandOnce(true) === false) {\n // fully expanded\n const token = this.stack.pop();\n\n if (token.treatAsRelax) {\n // the expansion of \\noexpand is the token itself\n token.noexpand = false;\n token.treatAsRelax = false;\n }\n\n output.push(token);\n }\n } // Count all of these tokens as additional expansions, to prevent\n // exponential blowup from linearly many \\edef's.\n\n\n this.countExpansion(output.length);\n return output;\n }\n /**\n * Fully expand the given macro name and return the result as a string,\n * or return `undefined` if no such macro is defined.\n */\n\n\n expandMacroAsText(name) {\n const tokens = this.expandMacro(name);\n\n if (tokens) {\n return tokens.map(token => token.text).join(\"\");\n } else {\n return tokens;\n }\n }\n /**\n * Returns the expanded macro as a reversed array of tokens and a macro\n * argument count. Or returns `null` if no such macro.\n */\n\n\n _getExpansion(name) {\n const definition = this.macros.get(name);\n\n if (definition == null) {\n // mainly checking for undefined here\n return definition;\n } // If a single character has an associated catcode other than 13\n // (active character), then don't expand it.\n\n\n if (name.length === 1) {\n const catcode = this.lexer.catcodes[name];\n\n if (catcode != null && catcode !== 13) {\n return;\n }\n }\n\n const expansion = typeof definition === \"function\" ? definition(this) : definition;\n\n if (typeof expansion === \"string\") {\n let numArgs = 0;\n\n if (expansion.indexOf(\"#\") !== -1) {\n const stripped = expansion.replace(/##/g, \"\");\n\n while (stripped.indexOf(\"#\" + (numArgs + 1)) !== -1) {\n ++numArgs;\n }\n }\n\n const bodyLexer = new Lexer(expansion, this.settings);\n const tokens = [];\n let tok = bodyLexer.lex();\n\n while (tok.text !== \"EOF\") {\n tokens.push(tok);\n tok = bodyLexer.lex();\n }\n\n tokens.reverse(); // to fit in with stack using push and pop\n\n const expanded = {\n tokens,\n numArgs\n };\n return expanded;\n }\n\n return expansion;\n }\n /**\n * Determine whether a command is currently \"defined\" (has some\n * functionality), meaning that it's a macro (in the current group),\n * a function, a symbol, or one of the special commands listed in\n * `implicitCommands`.\n */\n\n\n isDefined(name) {\n return this.macros.has(name) || src_functions.hasOwnProperty(name) || src_symbols.math.hasOwnProperty(name) || src_symbols.text.hasOwnProperty(name) || implicitCommands.hasOwnProperty(name);\n }\n /**\n * Determine whether a command is expandable.\n */\n\n\n isExpandable(name) {\n const macro = this.macros.get(name);\n return macro != null ? typeof macro === \"string\" || typeof macro === \"function\" || !macro.unexpandable : src_functions.hasOwnProperty(name) && !src_functions[name].primitive;\n }\n\n}\n;// CONCATENATED MODULE: ./src/unicodeSupOrSub.js\n// Helpers for Parser.js handling of Unicode (sub|super)script characters.\nconst unicodeSubRegEx = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/;\nconst uSubsAndSups = Object.freeze({\n '₊': '+',\n '₋': '-',\n '₌': '=',\n '₍': '(',\n '₎': ')',\n '₀': '0',\n '₁': '1',\n '₂': '2',\n '₃': '3',\n '₄': '4',\n '₅': '5',\n '₆': '6',\n '₇': '7',\n '₈': '8',\n '₉': '9',\n '\\u2090': 'a',\n '\\u2091': 'e',\n '\\u2095': 'h',\n '\\u1D62': 'i',\n '\\u2C7C': 'j',\n '\\u2096': 'k',\n '\\u2097': 'l',\n '\\u2098': 'm',\n '\\u2099': 'n',\n '\\u2092': 'o',\n '\\u209A': 'p',\n '\\u1D63': 'r',\n '\\u209B': 's',\n '\\u209C': 't',\n '\\u1D64': 'u',\n '\\u1D65': 'v',\n '\\u2093': 'x',\n '\\u1D66': 'β',\n '\\u1D67': 'γ',\n '\\u1D68': 'ρ',\n '\\u1D69': '\\u03d5',\n '\\u1D6A': 'χ',\n '⁺': '+',\n '⁻': '-',\n '⁼': '=',\n '⁽': '(',\n '⁾': ')',\n '⁰': '0',\n '¹': '1',\n '²': '2',\n '³': '3',\n '⁴': '4',\n '⁵': '5',\n '⁶': '6',\n '⁷': '7',\n '⁸': '8',\n '⁹': '9',\n '\\u1D2C': 'A',\n '\\u1D2E': 'B',\n '\\u1D30': 'D',\n '\\u1D31': 'E',\n '\\u1D33': 'G',\n '\\u1D34': 'H',\n '\\u1D35': 'I',\n '\\u1D36': 'J',\n '\\u1D37': 'K',\n '\\u1D38': 'L',\n '\\u1D39': 'M',\n '\\u1D3A': 'N',\n '\\u1D3C': 'O',\n '\\u1D3E': 'P',\n '\\u1D3F': 'R',\n '\\u1D40': 'T',\n '\\u1D41': 'U',\n '\\u2C7D': 'V',\n '\\u1D42': 'W',\n '\\u1D43': 'a',\n '\\u1D47': 'b',\n '\\u1D9C': 'c',\n '\\u1D48': 'd',\n '\\u1D49': 'e',\n '\\u1DA0': 'f',\n '\\u1D4D': 'g',\n '\\u02B0': 'h',\n '\\u2071': 'i',\n '\\u02B2': 'j',\n '\\u1D4F': 'k',\n '\\u02E1': 'l',\n '\\u1D50': 'm',\n '\\u207F': 'n',\n '\\u1D52': 'o',\n '\\u1D56': 'p',\n '\\u02B3': 'r',\n '\\u02E2': 's',\n '\\u1D57': 't',\n '\\u1D58': 'u',\n '\\u1D5B': 'v',\n '\\u02B7': 'w',\n '\\u02E3': 'x',\n '\\u02B8': 'y',\n '\\u1DBB': 'z',\n '\\u1D5D': 'β',\n '\\u1D5E': 'γ',\n '\\u1D5F': 'δ',\n '\\u1D60': '\\u03d5',\n '\\u1D61': 'χ',\n '\\u1DBF': 'θ'\n});\n;// CONCATENATED MODULE: ./src/Parser.js\n/* eslint no-constant-condition:0 */\n\n\n\n\n\n\n\n\n\n\n // Pre-evaluate both modules as unicodeSymbols require String.normalize()\n\nconst unicodeAccents = {\n \"́\": {\n \"text\": \"\\\\'\",\n \"math\": \"\\\\acute\"\n },\n \"̀\": {\n \"text\": \"\\\\`\",\n \"math\": \"\\\\grave\"\n },\n \"̈\": {\n \"text\": \"\\\\\\\"\",\n \"math\": \"\\\\ddot\"\n },\n \"̃\": {\n \"text\": \"\\\\~\",\n \"math\": \"\\\\tilde\"\n },\n \"̄\": {\n \"text\": \"\\\\=\",\n \"math\": \"\\\\bar\"\n },\n \"̆\": {\n \"text\": \"\\\\u\",\n \"math\": \"\\\\breve\"\n },\n \"̌\": {\n \"text\": \"\\\\v\",\n \"math\": \"\\\\check\"\n },\n \"̂\": {\n \"text\": \"\\\\^\",\n \"math\": \"\\\\hat\"\n },\n \"̇\": {\n \"text\": \"\\\\.\",\n \"math\": \"\\\\dot\"\n },\n \"̊\": {\n \"text\": \"\\\\r\",\n \"math\": \"\\\\mathring\"\n },\n \"̋\": {\n \"text\": \"\\\\H\"\n },\n \"̧\": {\n \"text\": \"\\\\c\"\n }\n};\nconst unicodeSymbols = {\n \"á\": \"á\",\n \"à\": \"à\",\n \"ä\": \"ä\",\n \"ǟ\": \"ǟ\",\n \"ã\": \"ã\",\n \"ā\": \"ā\",\n \"ă\": \"ă\",\n \"ắ\": \"ắ\",\n \"ằ\": \"ằ\",\n \"ẵ\": \"ẵ\",\n \"ǎ\": \"ǎ\",\n \"â\": \"â\",\n \"ấ\": \"ấ\",\n \"ầ\": \"ầ\",\n \"ẫ\": \"ẫ\",\n \"ȧ\": \"ȧ\",\n \"ǡ\": \"ǡ\",\n \"å\": \"å\",\n \"ǻ\": \"ǻ\",\n \"ḃ\": \"ḃ\",\n \"ć\": \"ć\",\n \"ḉ\": \"ḉ\",\n \"č\": \"č\",\n \"ĉ\": \"ĉ\",\n \"ċ\": \"ċ\",\n \"ç\": \"ç\",\n \"ď\": \"ď\",\n \"ḋ\": \"ḋ\",\n \"ḑ\": \"ḑ\",\n \"é\": \"é\",\n \"è\": \"è\",\n \"ë\": \"ë\",\n \"ẽ\": \"ẽ\",\n \"ē\": \"ē\",\n \"ḗ\": \"ḗ\",\n \"ḕ\": \"ḕ\",\n \"ĕ\": \"ĕ\",\n \"ḝ\": \"ḝ\",\n \"ě\": \"ě\",\n \"ê\": \"ê\",\n \"ế\": \"ế\",\n \"ề\": \"ề\",\n \"ễ\": \"ễ\",\n \"ė\": \"ė\",\n \"ȩ\": \"ȩ\",\n \"ḟ\": \"ḟ\",\n \"ǵ\": \"ǵ\",\n \"ḡ\": \"ḡ\",\n \"ğ\": \"ğ\",\n \"ǧ\": \"ǧ\",\n \"ĝ\": \"ĝ\",\n \"ġ\": \"ġ\",\n \"ģ\": \"ģ\",\n \"ḧ\": \"ḧ\",\n \"ȟ\": \"ȟ\",\n \"ĥ\": \"ĥ\",\n \"ḣ\": \"ḣ\",\n \"ḩ\": \"ḩ\",\n \"í\": \"í\",\n \"ì\": \"ì\",\n \"ï\": \"ï\",\n \"ḯ\": \"ḯ\",\n \"ĩ\": \"ĩ\",\n \"ī\": \"ī\",\n \"ĭ\": \"ĭ\",\n \"ǐ\": \"ǐ\",\n \"î\": \"î\",\n \"ǰ\": \"ǰ\",\n \"ĵ\": \"ĵ\",\n \"ḱ\": \"ḱ\",\n \"ǩ\": \"ǩ\",\n \"ķ\": \"ķ\",\n \"ĺ\": \"ĺ\",\n \"ľ\": \"ľ\",\n \"ļ\": \"ļ\",\n \"ḿ\": \"ḿ\",\n \"ṁ\": \"ṁ\",\n \"ń\": \"ń\",\n \"ǹ\": \"ǹ\",\n \"ñ\": \"ñ\",\n \"ň\": \"ň\",\n \"ṅ\": \"ṅ\",\n \"ņ\": \"ņ\",\n \"ó\": \"ó\",\n \"ò\": \"ò\",\n \"ö\": \"ö\",\n \"ȫ\": \"ȫ\",\n \"õ\": \"õ\",\n \"ṍ\": \"ṍ\",\n \"ṏ\": \"ṏ\",\n \"ȭ\": \"ȭ\",\n \"ō\": \"ō\",\n \"ṓ\": \"ṓ\",\n \"ṑ\": \"ṑ\",\n \"ŏ\": \"ŏ\",\n \"ǒ\": \"ǒ\",\n \"ô\": \"ô\",\n \"ố\": \"ố\",\n \"ồ\": \"ồ\",\n \"ỗ\": \"ỗ\",\n \"ȯ\": \"ȯ\",\n \"ȱ\": \"ȱ\",\n \"ő\": \"ő\",\n \"ṕ\": \"ṕ\",\n \"ṗ\": \"ṗ\",\n \"ŕ\": \"ŕ\",\n \"ř\": \"ř\",\n \"ṙ\": \"ṙ\",\n \"ŗ\": \"ŗ\",\n \"ś\": \"ś\",\n \"ṥ\": \"ṥ\",\n \"š\": \"š\",\n \"ṧ\": \"ṧ\",\n \"ŝ\": \"ŝ\",\n \"ṡ\": \"ṡ\",\n \"ş\": \"ş\",\n \"ẗ\": \"ẗ\",\n \"ť\": \"ť\",\n \"ṫ\": \"ṫ\",\n \"ţ\": \"ţ\",\n \"ú\": \"ú\",\n \"ù\": \"ù\",\n \"ü\": \"ü\",\n \"ǘ\": \"ǘ\",\n \"ǜ\": \"ǜ\",\n \"ǖ\": \"ǖ\",\n \"ǚ\": \"ǚ\",\n \"ũ\": \"ũ\",\n \"ṹ\": \"ṹ\",\n \"ū\": \"ū\",\n \"ṻ\": \"ṻ\",\n \"ŭ\": \"ŭ\",\n \"ǔ\": \"ǔ\",\n \"û\": \"û\",\n \"ů\": \"ů\",\n \"ű\": \"ű\",\n \"ṽ\": \"ṽ\",\n \"ẃ\": \"ẃ\",\n \"ẁ\": \"ẁ\",\n \"ẅ\": \"ẅ\",\n \"ŵ\": \"ŵ\",\n \"ẇ\": \"ẇ\",\n \"ẘ\": \"ẘ\",\n \"ẍ\": \"ẍ\",\n \"ẋ\": \"ẋ\",\n \"ý\": \"ý\",\n \"ỳ\": \"ỳ\",\n \"ÿ\": \"ÿ\",\n \"ỹ\": \"ỹ\",\n \"ȳ\": \"ȳ\",\n \"ŷ\": \"ŷ\",\n \"ẏ\": \"ẏ\",\n \"ẙ\": \"ẙ\",\n \"ź\": \"ź\",\n \"ž\": \"ž\",\n \"ẑ\": \"ẑ\",\n \"ż\": \"ż\",\n \"Á\": \"Á\",\n \"À\": \"À\",\n \"Ä\": \"Ä\",\n \"Ǟ\": \"Ǟ\",\n \"Ã\": \"Ã\",\n \"Ā\": \"Ā\",\n \"Ă\": \"Ă\",\n \"Ắ\": \"Ắ\",\n \"Ằ\": \"Ằ\",\n \"Ẵ\": \"Ẵ\",\n \"Ǎ\": \"Ǎ\",\n \"Â\": \"Â\",\n \"Ấ\": \"Ấ\",\n \"Ầ\": \"Ầ\",\n \"Ẫ\": \"Ẫ\",\n \"Ȧ\": \"Ȧ\",\n \"Ǡ\": \"Ǡ\",\n \"Å\": \"Å\",\n \"Ǻ\": \"Ǻ\",\n \"Ḃ\": \"Ḃ\",\n \"Ć\": \"Ć\",\n \"Ḉ\": \"Ḉ\",\n \"Č\": \"Č\",\n \"Ĉ\": \"Ĉ\",\n \"Ċ\": \"Ċ\",\n \"Ç\": \"Ç\",\n \"Ď\": \"Ď\",\n \"Ḋ\": \"Ḋ\",\n \"Ḑ\": \"Ḑ\",\n \"É\": \"É\",\n \"È\": \"È\",\n \"Ë\": \"Ë\",\n \"Ẽ\": \"Ẽ\",\n \"Ē\": \"Ē\",\n \"Ḗ\": \"Ḗ\",\n \"Ḕ\": \"Ḕ\",\n \"Ĕ\": \"Ĕ\",\n \"Ḝ\": \"Ḝ\",\n \"Ě\": \"Ě\",\n \"Ê\": \"Ê\",\n \"Ế\": \"Ế\",\n \"Ề\": \"Ề\",\n \"Ễ\": \"Ễ\",\n \"Ė\": \"Ė\",\n \"Ȩ\": \"Ȩ\",\n \"Ḟ\": \"Ḟ\",\n \"Ǵ\": \"Ǵ\",\n \"Ḡ\": \"Ḡ\",\n \"Ğ\": \"Ğ\",\n \"Ǧ\": \"Ǧ\",\n \"Ĝ\": \"Ĝ\",\n \"Ġ\": \"Ġ\",\n \"Ģ\": \"Ģ\",\n \"Ḧ\": \"Ḧ\",\n \"Ȟ\": \"Ȟ\",\n \"Ĥ\": \"Ĥ\",\n \"Ḣ\": \"Ḣ\",\n \"Ḩ\": \"Ḩ\",\n \"Í\": \"Í\",\n \"Ì\": \"Ì\",\n \"Ï\": \"Ï\",\n \"Ḯ\": \"Ḯ\",\n \"Ĩ\": \"Ĩ\",\n \"Ī\": \"Ī\",\n \"Ĭ\": \"Ĭ\",\n \"Ǐ\": \"Ǐ\",\n \"Î\": \"Î\",\n \"İ\": \"İ\",\n \"Ĵ\": \"Ĵ\",\n \"Ḱ\": \"Ḱ\",\n \"Ǩ\": \"Ǩ\",\n \"Ķ\": \"Ķ\",\n \"Ĺ\": \"Ĺ\",\n \"Ľ\": \"Ľ\",\n \"Ļ\": \"Ļ\",\n \"Ḿ\": \"Ḿ\",\n \"Ṁ\": \"Ṁ\",\n \"Ń\": \"Ń\",\n \"Ǹ\": \"Ǹ\",\n \"Ñ\": \"Ñ\",\n \"Ň\": \"Ň\",\n \"Ṅ\": \"Ṅ\",\n \"Ņ\": \"Ņ\",\n \"Ó\": \"Ó\",\n \"Ò\": \"Ò\",\n \"Ö\": \"Ö\",\n \"Ȫ\": \"Ȫ\",\n \"Õ\": \"Õ\",\n \"Ṍ\": \"Ṍ\",\n \"Ṏ\": \"Ṏ\",\n \"Ȭ\": \"Ȭ\",\n \"Ō\": \"Ō\",\n \"Ṓ\": \"Ṓ\",\n \"Ṑ\": \"Ṑ\",\n \"Ŏ\": \"Ŏ\",\n \"Ǒ\": \"Ǒ\",\n \"Ô\": \"Ô\",\n \"Ố\": \"Ố\",\n \"Ồ\": \"Ồ\",\n \"Ỗ\": \"Ỗ\",\n \"Ȯ\": \"Ȯ\",\n \"Ȱ\": \"Ȱ\",\n \"Ő\": \"Ő\",\n \"Ṕ\": \"Ṕ\",\n \"Ṗ\": \"Ṗ\",\n \"Ŕ\": \"Ŕ\",\n \"Ř\": \"Ř\",\n \"Ṙ\": \"Ṙ\",\n \"Ŗ\": \"Ŗ\",\n \"Ś\": \"Ś\",\n \"Ṥ\": \"Ṥ\",\n \"Š\": \"Š\",\n \"Ṧ\": \"Ṧ\",\n \"Ŝ\": \"Ŝ\",\n \"Ṡ\": \"Ṡ\",\n \"Ş\": \"Ş\",\n \"Ť\": \"Ť\",\n \"Ṫ\": \"Ṫ\",\n \"Ţ\": \"Ţ\",\n \"Ú\": \"Ú\",\n \"Ù\": \"Ù\",\n \"Ü\": \"Ü\",\n \"Ǘ\": \"Ǘ\",\n \"Ǜ\": \"Ǜ\",\n \"Ǖ\": \"Ǖ\",\n \"Ǚ\": \"Ǚ\",\n \"Ũ\": \"Ũ\",\n \"Ṹ\": \"Ṹ\",\n \"Ū\": \"Ū\",\n \"Ṻ\": \"Ṻ\",\n \"Ŭ\": \"Ŭ\",\n \"Ǔ\": \"Ǔ\",\n \"Û\": \"Û\",\n \"Ů\": \"Ů\",\n \"Ű\": \"Ű\",\n \"Ṽ\": \"Ṽ\",\n \"Ẃ\": \"Ẃ\",\n \"Ẁ\": \"Ẁ\",\n \"Ẅ\": \"Ẅ\",\n \"Ŵ\": \"Ŵ\",\n \"Ẇ\": \"Ẇ\",\n \"Ẍ\": \"Ẍ\",\n \"Ẋ\": \"Ẋ\",\n \"Ý\": \"Ý\",\n \"Ỳ\": \"Ỳ\",\n \"Ÿ\": \"Ÿ\",\n \"Ỹ\": \"Ỹ\",\n \"Ȳ\": \"Ȳ\",\n \"Ŷ\": \"Ŷ\",\n \"Ẏ\": \"Ẏ\",\n \"Ź\": \"Ź\",\n \"Ž\": \"Ž\",\n \"Ẑ\": \"Ẑ\",\n \"Ż\": \"Ż\",\n \"ά\": \"ά\",\n \"ὰ\": \"ὰ\",\n \"ᾱ\": \"ᾱ\",\n \"ᾰ\": \"ᾰ\",\n \"έ\": \"έ\",\n \"ὲ\": \"ὲ\",\n \"ή\": \"ή\",\n \"ὴ\": \"ὴ\",\n \"ί\": \"ί\",\n \"ὶ\": \"ὶ\",\n \"ϊ\": \"ϊ\",\n \"ΐ\": \"ΐ\",\n \"ῒ\": \"ῒ\",\n \"ῑ\": \"ῑ\",\n \"ῐ\": \"ῐ\",\n \"ό\": \"ό\",\n \"ὸ\": \"ὸ\",\n \"ύ\": \"ύ\",\n \"ὺ\": \"ὺ\",\n \"ϋ\": \"ϋ\",\n \"ΰ\": \"ΰ\",\n \"ῢ\": \"ῢ\",\n \"ῡ\": \"ῡ\",\n \"ῠ\": \"ῠ\",\n \"ώ\": \"ώ\",\n \"ὼ\": \"ὼ\",\n \"Ύ\": \"Ύ\",\n \"Ὺ\": \"Ὺ\",\n \"Ϋ\": \"Ϋ\",\n \"Ῡ\": \"Ῡ\",\n \"Ῠ\": \"Ῠ\",\n \"Ώ\": \"Ώ\",\n \"Ὼ\": \"Ὼ\"\n};\n\n/**\n * This file contains the parser used to parse out a TeX expression from the\n * input. Since TeX isn't context-free, standard parsers don't work particularly\n * well.\n *\n * The strategy of this parser is as such:\n *\n * The main functions (the `.parse...` ones) take a position in the current\n * parse string to parse tokens from. The lexer (found in Lexer.js, stored at\n * this.gullet.lexer) also supports pulling out tokens at arbitrary places. When\n * individual tokens are needed at a position, the lexer is called to pull out a\n * token, which is then used.\n *\n * The parser has a property called \"mode\" indicating the mode that\n * the parser is currently in. Currently it has to be one of \"math\" or\n * \"text\", which denotes whether the current environment is a math-y\n * one or a text-y one (e.g. inside \\text). Currently, this serves to\n * limit the functions which can be used in text mode.\n *\n * The main functions then return an object which contains the useful data that\n * was parsed at its given point, and a new position at the end of the parsed\n * data. The main functions can call each other and continue the parsing by\n * using the returned position as a new starting point.\n *\n * There are also extra `.handle...` functions, which pull out some reused\n * functionality into self-contained functions.\n *\n * The functions return ParseNodes.\n */\nclass Parser {\n constructor(input, settings) {\n this.mode = void 0;\n this.gullet = void 0;\n this.settings = void 0;\n this.leftrightDepth = void 0;\n this.nextToken = void 0;\n // Start in math mode\n this.mode = \"math\"; // Create a new macro expander (gullet) and (indirectly via that) also a\n // new lexer (mouth) for this parser (stomach, in the language of TeX)\n\n this.gullet = new MacroExpander(input, settings, this.mode); // Store the settings for use in parsing\n\n this.settings = settings; // Count leftright depth (for \\middle errors)\n\n this.leftrightDepth = 0;\n }\n /**\n * Checks a result to make sure it has the right type, and throws an\n * appropriate error otherwise.\n */\n\n\n expect(text, consume) {\n if (consume === void 0) {\n consume = true;\n }\n\n if (this.fetch().text !== text) {\n throw new src_ParseError(\"Expected '\" + text + \"', got '\" + this.fetch().text + \"'\", this.fetch());\n }\n\n if (consume) {\n this.consume();\n }\n }\n /**\n * Discards the current lookahead token, considering it consumed.\n */\n\n\n consume() {\n this.nextToken = null;\n }\n /**\n * Return the current lookahead token, or if there isn't one (at the\n * beginning, or if the previous lookahead token was consume()d),\n * fetch the next token as the new lookahead token and return it.\n */\n\n\n fetch() {\n if (this.nextToken == null) {\n this.nextToken = this.gullet.expandNextToken();\n }\n\n return this.nextToken;\n }\n /**\n * Switches between \"text\" and \"math\" modes.\n */\n\n\n switchMode(newMode) {\n this.mode = newMode;\n this.gullet.switchMode(newMode);\n }\n /**\n * Main parsing function, which parses an entire input.\n */\n\n\n parse() {\n if (!this.settings.globalGroup) {\n // Create a group namespace for the math expression.\n // (LaTeX creates a new group for every $...$, $$...$$, \\[...\\].)\n this.gullet.beginGroup();\n } // Use old \\color behavior (same as LaTeX's \\textcolor) if requested.\n // We do this within the group for the math expression, so it doesn't\n // pollute settings.macros.\n\n\n if (this.settings.colorIsTextColor) {\n this.gullet.macros.set(\"\\\\color\", \"\\\\textcolor\");\n }\n\n try {\n // Try to parse the input\n const parse = this.parseExpression(false); // If we succeeded, make sure there's an EOF at the end\n\n this.expect(\"EOF\"); // End the group namespace for the expression\n\n if (!this.settings.globalGroup) {\n this.gullet.endGroup();\n }\n\n return parse; // Close any leftover groups in case of a parse error.\n } finally {\n this.gullet.endGroups();\n }\n }\n /**\n * Fully parse a separate sequence of tokens as a separate job.\n * Tokens should be specified in reverse order, as in a MacroDefinition.\n */\n\n\n subparse(tokens) {\n // Save the next token from the current job.\n const oldToken = this.nextToken;\n this.consume(); // Run the new job, terminating it with an excess '}'\n\n this.gullet.pushToken(new Token(\"}\"));\n this.gullet.pushTokens(tokens);\n const parse = this.parseExpression(false);\n this.expect(\"}\"); // Restore the next token from the current job.\n\n this.nextToken = oldToken;\n return parse;\n }\n\n /**\n * Parses an \"expression\", which is a list of atoms.\n *\n * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This\n * happens when functions have higher precedence han infix\n * nodes in implicit parses.\n *\n * `breakOnTokenText`: The text of the token that the expression should end\n * with, or `null` if something else should end the\n * expression.\n */\n parseExpression(breakOnInfix, breakOnTokenText) {\n const body = []; // Keep adding atoms to the body until we can't parse any more atoms (either\n // we reached the end, a }, or a \\right)\n\n while (true) {\n // Ignore spaces in math mode\n if (this.mode === \"math\") {\n this.consumeSpaces();\n }\n\n const lex = this.fetch();\n\n if (Parser.endOfExpression.indexOf(lex.text) !== -1) {\n break;\n }\n\n if (breakOnTokenText && lex.text === breakOnTokenText) {\n break;\n }\n\n if (breakOnInfix && src_functions[lex.text] && src_functions[lex.text].infix) {\n break;\n }\n\n const atom = this.parseAtom(breakOnTokenText);\n\n if (!atom) {\n break;\n } else if (atom.type === \"internal\") {\n continue;\n }\n\n body.push(atom);\n }\n\n if (this.mode === \"text\") {\n this.formLigatures(body);\n }\n\n return this.handleInfixNodes(body);\n }\n /**\n * Rewrites infix operators such as \\over with corresponding commands such\n * as \\frac.\n *\n * There can only be one infix operator per group. If there's more than one\n * then the expression is ambiguous. This can be resolved by adding {}.\n */\n\n\n handleInfixNodes(body) {\n let overIndex = -1;\n let funcName;\n\n for (let i = 0; i < body.length; i++) {\n if (body[i].type === \"infix\") {\n if (overIndex !== -1) {\n throw new src_ParseError(\"only one infix operator per group\", body[i].token);\n }\n\n overIndex = i;\n funcName = body[i].replaceWith;\n }\n }\n\n if (overIndex !== -1 && funcName) {\n let numerNode;\n let denomNode;\n const numerBody = body.slice(0, overIndex);\n const denomBody = body.slice(overIndex + 1);\n\n if (numerBody.length === 1 && numerBody[0].type === \"ordgroup\") {\n numerNode = numerBody[0];\n } else {\n numerNode = {\n type: \"ordgroup\",\n mode: this.mode,\n body: numerBody\n };\n }\n\n if (denomBody.length === 1 && denomBody[0].type === \"ordgroup\") {\n denomNode = denomBody[0];\n } else {\n denomNode = {\n type: \"ordgroup\",\n mode: this.mode,\n body: denomBody\n };\n }\n\n let node;\n\n if (funcName === \"\\\\\\\\abovefrac\") {\n node = this.callFunction(funcName, [numerNode, body[overIndex], denomNode], []);\n } else {\n node = this.callFunction(funcName, [numerNode, denomNode], []);\n }\n\n return [node];\n } else {\n return body;\n }\n }\n /**\n * Handle a subscript or superscript with nice errors.\n */\n\n\n handleSupSubscript(name // For error reporting.\n ) {\n const symbolToken = this.fetch();\n const symbol = symbolToken.text;\n this.consume();\n this.consumeSpaces(); // ignore spaces before sup/subscript argument\n\n const group = this.parseGroup(name);\n\n if (!group) {\n throw new src_ParseError(\"Expected group after '\" + symbol + \"'\", symbolToken);\n }\n\n return group;\n }\n /**\n * Converts the textual input of an unsupported command into a text node\n * contained within a color node whose color is determined by errorColor\n */\n\n\n formatUnsupportedCmd(text) {\n const textordArray = [];\n\n for (let i = 0; i < text.length; i++) {\n textordArray.push({\n type: \"textord\",\n mode: \"text\",\n text: text[i]\n });\n }\n\n const textNode = {\n type: \"text\",\n mode: this.mode,\n body: textordArray\n };\n const colorNode = {\n type: \"color\",\n mode: this.mode,\n color: this.settings.errorColor,\n body: [textNode]\n };\n return colorNode;\n }\n /**\n * Parses a group with optional super/subscripts.\n */\n\n\n parseAtom(breakOnTokenText) {\n // The body of an atom is an implicit group, so that things like\n // \\left(x\\right)^2 work correctly.\n const base = this.parseGroup(\"atom\", breakOnTokenText); // In text mode, we don't have superscripts or subscripts\n\n if (this.mode === \"text\") {\n return base;\n } // Note that base may be empty (i.e. null) at this point.\n\n\n let superscript;\n let subscript;\n\n while (true) {\n // Guaranteed in math mode, so eat any spaces first.\n this.consumeSpaces(); // Lex the first token\n\n const lex = this.fetch();\n\n if (lex.text === \"\\\\limits\" || lex.text === \"\\\\nolimits\") {\n // We got a limit control\n if (base && base.type === \"op\") {\n const limits = lex.text === \"\\\\limits\";\n base.limits = limits;\n base.alwaysHandleSupSub = true;\n } else if (base && base.type === \"operatorname\") {\n if (base.alwaysHandleSupSub) {\n base.limits = lex.text === \"\\\\limits\";\n }\n } else {\n throw new src_ParseError(\"Limit controls must follow a math operator\", lex);\n }\n\n this.consume();\n } else if (lex.text === \"^\") {\n // We got a superscript start\n if (superscript) {\n throw new src_ParseError(\"Double superscript\", lex);\n }\n\n superscript = this.handleSupSubscript(\"superscript\");\n } else if (lex.text === \"_\") {\n // We got a subscript start\n if (subscript) {\n throw new src_ParseError(\"Double subscript\", lex);\n }\n\n subscript = this.handleSupSubscript(\"subscript\");\n } else if (lex.text === \"'\") {\n // We got a prime\n if (superscript) {\n throw new src_ParseError(\"Double superscript\", lex);\n }\n\n const prime = {\n type: \"textord\",\n mode: this.mode,\n text: \"\\\\prime\"\n }; // Many primes can be grouped together, so we handle this here\n\n const primes = [prime];\n this.consume(); // Keep lexing tokens until we get something that's not a prime\n\n while (this.fetch().text === \"'\") {\n // For each one, add another prime to the list\n primes.push(prime);\n this.consume();\n } // If there's a superscript following the primes, combine that\n // superscript in with the primes.\n\n\n if (this.fetch().text === \"^\") {\n primes.push(this.handleSupSubscript(\"superscript\"));\n } // Put everything into an ordgroup as the superscript\n\n\n superscript = {\n type: \"ordgroup\",\n mode: this.mode,\n body: primes\n };\n } else if (uSubsAndSups[lex.text]) {\n // A Unicode subscript or superscript character.\n // We treat these similarly to the unicode-math package.\n // So we render a string of Unicode (sub|super)scripts the\n // same as a (sub|super)script of regular characters.\n const isSub = unicodeSubRegEx.test(lex.text);\n const subsupTokens = [];\n subsupTokens.push(new Token(uSubsAndSups[lex.text]));\n this.consume(); // Continue fetching tokens to fill out the string.\n\n while (true) {\n const token = this.fetch().text;\n\n if (!uSubsAndSups[token]) {\n break;\n }\n\n if (unicodeSubRegEx.test(token) !== isSub) {\n break;\n }\n\n subsupTokens.unshift(new Token(uSubsAndSups[token]));\n this.consume();\n } // Now create a (sub|super)script.\n\n\n const body = this.subparse(subsupTokens);\n\n if (isSub) {\n subscript = {\n type: \"ordgroup\",\n mode: \"math\",\n body\n };\n } else {\n superscript = {\n type: \"ordgroup\",\n mode: \"math\",\n body\n };\n }\n } else {\n // If it wasn't ^, _, or ', stop parsing super/subscripts\n break;\n }\n } // Base must be set if superscript or subscript are set per logic above,\n // but need to check here for type check to pass.\n\n\n if (superscript || subscript) {\n // If we got either a superscript or subscript, create a supsub\n return {\n type: \"supsub\",\n mode: this.mode,\n base: base,\n sup: superscript,\n sub: subscript\n };\n } else {\n // Otherwise return the original body\n return base;\n }\n }\n /**\n * Parses an entire function, including its base and all of its arguments.\n */\n\n\n parseFunction(breakOnTokenText, name // For determining its context\n ) {\n const token = this.fetch();\n const func = token.text;\n const funcData = src_functions[func];\n\n if (!funcData) {\n return null;\n }\n\n this.consume(); // consume command token\n\n if (name && name !== \"atom\" && !funcData.allowedInArgument) {\n throw new src_ParseError(\"Got function '\" + func + \"' with no arguments\" + (name ? \" as \" + name : \"\"), token);\n } else if (this.mode === \"text\" && !funcData.allowedInText) {\n throw new src_ParseError(\"Can't use function '\" + func + \"' in text mode\", token);\n } else if (this.mode === \"math\" && funcData.allowedInMath === false) {\n throw new src_ParseError(\"Can't use function '\" + func + \"' in math mode\", token);\n }\n\n const {\n args,\n optArgs\n } = this.parseArguments(func, funcData);\n return this.callFunction(func, args, optArgs, token, breakOnTokenText);\n }\n /**\n * Call a function handler with a suitable context and arguments.\n */\n\n\n callFunction(name, args, optArgs, token, breakOnTokenText) {\n const context = {\n funcName: name,\n parser: this,\n token,\n breakOnTokenText\n };\n const func = src_functions[name];\n\n if (func && func.handler) {\n return func.handler(context, args, optArgs);\n } else {\n throw new src_ParseError(\"No function handler for \" + name);\n }\n }\n /**\n * Parses the arguments of a function or environment\n */\n\n\n parseArguments(func, // Should look like \"\\name\" or \"\\begin{name}\".\n funcData) {\n const totalArgs = funcData.numArgs + funcData.numOptionalArgs;\n\n if (totalArgs === 0) {\n return {\n args: [],\n optArgs: []\n };\n }\n\n const args = [];\n const optArgs = [];\n\n for (let i = 0; i < totalArgs; i++) {\n let argType = funcData.argTypes && funcData.argTypes[i];\n const isOptional = i < funcData.numOptionalArgs;\n\n if (funcData.primitive && argType == null || // \\sqrt expands into primitive if optional argument doesn't exist\n funcData.type === \"sqrt\" && i === 1 && optArgs[0] == null) {\n argType = \"primitive\";\n }\n\n const arg = this.parseGroupOfType(\"argument to '\" + func + \"'\", argType, isOptional);\n\n if (isOptional) {\n optArgs.push(arg);\n } else if (arg != null) {\n args.push(arg);\n } else {\n // should be unreachable\n throw new src_ParseError(\"Null argument, please report this as a bug\");\n }\n }\n\n return {\n args,\n optArgs\n };\n }\n /**\n * Parses a group when the mode is changing.\n */\n\n\n parseGroupOfType(name, type, optional) {\n switch (type) {\n case \"color\":\n return this.parseColorGroup(optional);\n\n case \"size\":\n return this.parseSizeGroup(optional);\n\n case \"url\":\n return this.parseUrlGroup(optional);\n\n case \"math\":\n case \"text\":\n return this.parseArgumentGroup(optional, type);\n\n case \"hbox\":\n {\n // hbox argument type wraps the argument in the equivalent of\n // \\hbox, which is like \\text but switching to \\textstyle size.\n const group = this.parseArgumentGroup(optional, \"text\");\n return group != null ? {\n type: \"styling\",\n mode: group.mode,\n body: [group],\n style: \"text\" // simulate \\textstyle\n\n } : null;\n }\n\n case \"raw\":\n {\n const token = this.parseStringGroup(\"raw\", optional);\n return token != null ? {\n type: \"raw\",\n mode: \"text\",\n string: token.text\n } : null;\n }\n\n case \"primitive\":\n {\n if (optional) {\n throw new src_ParseError(\"A primitive argument cannot be optional\");\n }\n\n const group = this.parseGroup(name);\n\n if (group == null) {\n throw new src_ParseError(\"Expected group as \" + name, this.fetch());\n }\n\n return group;\n }\n\n case \"original\":\n case null:\n case undefined:\n return this.parseArgumentGroup(optional);\n\n default:\n throw new src_ParseError(\"Unknown group type as \" + name, this.fetch());\n }\n }\n /**\n * Discard any space tokens, fetching the next non-space token.\n */\n\n\n consumeSpaces() {\n while (this.fetch().text === \" \") {\n this.consume();\n }\n }\n /**\n * Parses a group, essentially returning the string formed by the\n * brace-enclosed tokens plus some position information.\n */\n\n\n parseStringGroup(modeName, // Used to describe the mode in error messages.\n optional) {\n const argToken = this.gullet.scanArgument(optional);\n\n if (argToken == null) {\n return null;\n }\n\n let str = \"\";\n let nextToken;\n\n while ((nextToken = this.fetch()).text !== \"EOF\") {\n str += nextToken.text;\n this.consume();\n }\n\n this.consume(); // consume the end of the argument\n\n argToken.text = str;\n return argToken;\n }\n /**\n * Parses a regex-delimited group: the largest sequence of tokens\n * whose concatenated strings match `regex`. Returns the string\n * formed by the tokens plus some position information.\n */\n\n\n parseRegexGroup(regex, modeName // Used to describe the mode in error messages.\n ) {\n const firstToken = this.fetch();\n let lastToken = firstToken;\n let str = \"\";\n let nextToken;\n\n while ((nextToken = this.fetch()).text !== \"EOF\" && regex.test(str + nextToken.text)) {\n lastToken = nextToken;\n str += lastToken.text;\n this.consume();\n }\n\n if (str === \"\") {\n throw new src_ParseError(\"Invalid \" + modeName + \": '\" + firstToken.text + \"'\", firstToken);\n }\n\n return firstToken.range(lastToken, str);\n }\n /**\n * Parses a color description.\n */\n\n\n parseColorGroup(optional) {\n const res = this.parseStringGroup(\"color\", optional);\n\n if (res == null) {\n return null;\n }\n\n const match = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(res.text);\n\n if (!match) {\n throw new src_ParseError(\"Invalid color: '\" + res.text + \"'\", res);\n }\n\n let color = match[0];\n\n if (/^[0-9a-f]{6}$/i.test(color)) {\n // We allow a 6-digit HTML color spec without a leading \"#\".\n // This follows the xcolor package's HTML color model.\n // Predefined color names are all missed by this RegEx pattern.\n color = \"#\" + color;\n }\n\n return {\n type: \"color-token\",\n mode: this.mode,\n color\n };\n }\n /**\n * Parses a size specification, consisting of magnitude and unit.\n */\n\n\n parseSizeGroup(optional) {\n let res;\n let isBlank = false; // don't expand before parseStringGroup\n\n this.gullet.consumeSpaces();\n\n if (!optional && this.gullet.future().text !== \"{\") {\n res = this.parseRegexGroup(/^[-+]? *(?:$|\\d+|\\d+\\.\\d*|\\.\\d*) *[a-z]{0,2} *$/, \"size\");\n } else {\n res = this.parseStringGroup(\"size\", optional);\n }\n\n if (!res) {\n return null;\n }\n\n if (!optional && res.text.length === 0) {\n // Because we've tested for what is !optional, this block won't\n // affect \\kern, \\hspace, etc. It will capture the mandatory arguments\n // to \\genfrac and \\above.\n res.text = \"0pt\"; // Enable \\above{}\n\n isBlank = true; // This is here specifically for \\genfrac\n }\n\n const match = /([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(res.text);\n\n if (!match) {\n throw new src_ParseError(\"Invalid size: '\" + res.text + \"'\", res);\n }\n\n const data = {\n number: +(match[1] + match[2]),\n // sign + magnitude, cast to number\n unit: match[3]\n };\n\n if (!validUnit(data)) {\n throw new src_ParseError(\"Invalid unit: '\" + data.unit + \"'\", res);\n }\n\n return {\n type: \"size\",\n mode: this.mode,\n value: data,\n isBlank\n };\n }\n /**\n * Parses an URL, checking escaped letters and allowed protocols,\n * and setting the catcode of % as an active character (as in \\hyperref).\n */\n\n\n parseUrlGroup(optional) {\n this.gullet.lexer.setCatcode(\"%\", 13); // active character\n\n this.gullet.lexer.setCatcode(\"~\", 12); // other character\n\n const res = this.parseStringGroup(\"url\", optional);\n this.gullet.lexer.setCatcode(\"%\", 14); // comment character\n\n this.gullet.lexer.setCatcode(\"~\", 13); // active character\n\n if (res == null) {\n return null;\n } // hyperref package allows backslashes alone in href, but doesn't\n // generate valid links in such cases; we interpret this as\n // \"undefined\" behaviour, and keep them as-is. Some browser will\n // replace backslashes with forward slashes.\n\n\n const url = res.text.replace(/\\\\([#$%&~_^{}])/g, '$1');\n return {\n type: \"url\",\n mode: this.mode,\n url\n };\n }\n /**\n * Parses an argument with the mode specified.\n */\n\n\n parseArgumentGroup(optional, mode) {\n const argToken = this.gullet.scanArgument(optional);\n\n if (argToken == null) {\n return null;\n }\n\n const outerMode = this.mode;\n\n if (mode) {\n // Switch to specified mode\n this.switchMode(mode);\n }\n\n this.gullet.beginGroup();\n const expression = this.parseExpression(false, \"EOF\"); // TODO: find an alternative way to denote the end\n\n this.expect(\"EOF\"); // expect the end of the argument\n\n this.gullet.endGroup();\n const result = {\n type: \"ordgroup\",\n mode: this.mode,\n loc: argToken.loc,\n body: expression\n };\n\n if (mode) {\n // Switch mode back\n this.switchMode(outerMode);\n }\n\n return result;\n }\n /**\n * Parses an ordinary group, which is either a single nucleus (like \"x\")\n * or an expression in braces (like \"{x+y}\") or an implicit group, a group\n * that starts at the current position, and ends right before a higher explicit\n * group ends, or at EOF.\n */\n\n\n parseGroup(name, // For error reporting.\n breakOnTokenText) {\n const firstToken = this.fetch();\n const text = firstToken.text;\n let result; // Try to parse an open brace or \\begingroup\n\n if (text === \"{\" || text === \"\\\\begingroup\") {\n this.consume();\n const groupEnd = text === \"{\" ? \"}\" : \"\\\\endgroup\";\n this.gullet.beginGroup(); // If we get a brace, parse an expression\n\n const expression = this.parseExpression(false, groupEnd);\n const lastToken = this.fetch();\n this.expect(groupEnd); // Check that we got a matching closing brace\n\n this.gullet.endGroup();\n result = {\n type: \"ordgroup\",\n mode: this.mode,\n loc: SourceLocation.range(firstToken, lastToken),\n body: expression,\n // A group formed by \\begingroup...\\endgroup is a semi-simple group\n // which doesn't affect spacing in math mode, i.e., is transparent.\n // https://tex.stackexchange.com/questions/1930/when-should-one-\n // use-begingroup-instead-of-bgroup\n semisimple: text === \"\\\\begingroup\" || undefined\n };\n } else {\n // If there exists a function with this name, parse the function.\n // Otherwise, just return a nucleus\n result = this.parseFunction(breakOnTokenText, name) || this.parseSymbol();\n\n if (result == null && text[0] === \"\\\\\" && !implicitCommands.hasOwnProperty(text)) {\n if (this.settings.throwOnError) {\n throw new src_ParseError(\"Undefined control sequence: \" + text, firstToken);\n }\n\n result = this.formatUnsupportedCmd(text);\n this.consume();\n }\n }\n\n return result;\n }\n /**\n * Form ligature-like combinations of characters for text mode.\n * This includes inputs like \"--\", \"---\", \"``\" and \"''\".\n * The result will simply replace multiple textord nodes with a single\n * character in each value by a single textord node having multiple\n * characters in its value. The representation is still ASCII source.\n * The group will be modified in place.\n */\n\n\n formLigatures(group) {\n let n = group.length - 1;\n\n for (let i = 0; i < n; ++i) {\n const a = group[i]; // $FlowFixMe: Not every node type has a `text` property.\n\n const v = a.text;\n\n if (v === \"-\" && group[i + 1].text === \"-\") {\n if (i + 1 < n && group[i + 2].text === \"-\") {\n group.splice(i, 3, {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(a, group[i + 2]),\n text: \"---\"\n });\n n -= 2;\n } else {\n group.splice(i, 2, {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(a, group[i + 1]),\n text: \"--\"\n });\n n -= 1;\n }\n }\n\n if ((v === \"'\" || v === \"`\") && group[i + 1].text === v) {\n group.splice(i, 2, {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(a, group[i + 1]),\n text: v + v\n });\n n -= 1;\n }\n }\n }\n /**\n * Parse a single symbol out of the string. Here, we handle single character\n * symbols and special functions like \\verb.\n */\n\n\n parseSymbol() {\n const nucleus = this.fetch();\n let text = nucleus.text;\n\n if (/^\\\\verb[^a-zA-Z]/.test(text)) {\n this.consume();\n let arg = text.slice(5);\n const star = arg.charAt(0) === \"*\";\n\n if (star) {\n arg = arg.slice(1);\n } // Lexer's tokenRegex is constructed to always have matching\n // first/last characters.\n\n\n if (arg.length < 2 || arg.charAt(0) !== arg.slice(-1)) {\n throw new src_ParseError(\"\\\\verb assertion failed --\\n please report what input caused this bug\");\n }\n\n arg = arg.slice(1, -1); // remove first and last char\n\n return {\n type: \"verb\",\n mode: \"text\",\n body: arg,\n star\n };\n } // At this point, we should have a symbol, possibly with accents.\n // First expand any accented base symbol according to unicodeSymbols.\n\n\n if (unicodeSymbols.hasOwnProperty(text[0]) && !src_symbols[this.mode][text[0]]) {\n // This behavior is not strict (XeTeX-compatible) in math mode.\n if (this.settings.strict && this.mode === \"math\") {\n this.settings.reportNonstrict(\"unicodeTextInMathMode\", \"Accented Unicode text character \\\"\" + text[0] + \"\\\" used in \" + \"math mode\", nucleus);\n }\n\n text = unicodeSymbols[text[0]] + text.slice(1);\n } // Strip off any combining characters\n\n\n const match = combiningDiacriticalMarksEndRegex.exec(text);\n\n if (match) {\n text = text.substring(0, match.index);\n\n if (text === 'i') {\n text = '\\u0131'; // dotless i, in math and text mode\n } else if (text === 'j') {\n text = '\\u0237'; // dotless j, in math and text mode\n }\n } // Recognize base symbol\n\n\n let symbol;\n\n if (src_symbols[this.mode][text]) {\n if (this.settings.strict && this.mode === 'math' && extraLatin.indexOf(text) >= 0) {\n this.settings.reportNonstrict(\"unicodeTextInMathMode\", \"Latin-1/Unicode text character \\\"\" + text[0] + \"\\\" used in \" + \"math mode\", nucleus);\n }\n\n const group = src_symbols[this.mode][text].group;\n const loc = SourceLocation.range(nucleus);\n let s;\n\n if (ATOMS.hasOwnProperty(group)) {\n // $FlowFixMe\n const family = group;\n s = {\n type: \"atom\",\n mode: this.mode,\n family,\n loc,\n text\n };\n } else {\n // $FlowFixMe\n s = {\n type: group,\n mode: this.mode,\n loc,\n text\n };\n } // $FlowFixMe\n\n\n symbol = s;\n } else if (text.charCodeAt(0) >= 0x80) {\n // no symbol for e.g. ^\n if (this.settings.strict) {\n if (!supportedCodepoint(text.charCodeAt(0))) {\n this.settings.reportNonstrict(\"unknownSymbol\", \"Unrecognized Unicode character \\\"\" + text[0] + \"\\\"\" + (\" (\" + text.charCodeAt(0) + \")\"), nucleus);\n } else if (this.mode === \"math\") {\n this.settings.reportNonstrict(\"unicodeTextInMathMode\", \"Unicode text character \\\"\" + text[0] + \"\\\" used in math mode\", nucleus);\n }\n } // All nonmathematical Unicode characters are rendered as if they\n // are in text mode (wrapped in \\text) because that's what it\n // takes to render them in LaTeX. Setting `mode: this.mode` is\n // another natural choice (the user requested math mode), but\n // this makes it more difficult for getCharacterMetrics() to\n // distinguish Unicode characters without metrics and those for\n // which we want to simulate the letter M.\n\n\n symbol = {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(nucleus),\n text\n };\n } else {\n return null; // EOF, ^, _, {, }, etc.\n }\n\n this.consume(); // Transform combining characters into accents\n\n if (match) {\n for (let i = 0; i < match[0].length; i++) {\n const accent = match[0][i];\n\n if (!unicodeAccents[accent]) {\n throw new src_ParseError(\"Unknown accent ' \" + accent + \"'\", nucleus);\n }\n\n const command = unicodeAccents[accent][this.mode] || unicodeAccents[accent].text;\n\n if (!command) {\n throw new src_ParseError(\"Accent \" + accent + \" unsupported in \" + this.mode + \" mode\", nucleus);\n }\n\n symbol = {\n type: \"accent\",\n mode: this.mode,\n loc: SourceLocation.range(nucleus),\n label: command,\n isStretchy: false,\n isShifty: true,\n // $FlowFixMe\n base: symbol\n };\n }\n } // $FlowFixMe\n\n\n return symbol;\n }\n\n}\nParser.endOfExpression = [\"}\", \"\\\\endgroup\", \"\\\\end\", \"\\\\right\", \"&\"];\n;// CONCATENATED MODULE: ./src/parseTree.js\n/**\n * Provides a single function for parsing an expression using a Parser\n * TODO(emily): Remove this\n */\n\n\n\n\n/**\n * Parses an expression using a Parser, then returns the parsed result.\n */\nconst parseTree = function (toParse, settings) {\n if (!(typeof toParse === 'string' || toParse instanceof String)) {\n throw new TypeError('KaTeX can only parse string typed expression');\n }\n\n const parser = new Parser(toParse, settings); // Blank out any \\df@tag to avoid spurious \"Duplicate \\tag\" errors\n\n delete parser.gullet.macros.current[\"\\\\df@tag\"];\n let tree = parser.parse(); // Prevent a color definition from persisting between calls to katex.render().\n\n delete parser.gullet.macros.current[\"\\\\current@color\"];\n delete parser.gullet.macros.current[\"\\\\color\"]; // If the input used \\tag, it will set the \\df@tag macro to the tag.\n // In this case, we separately parse the tag and wrap the tree.\n\n if (parser.gullet.macros.get(\"\\\\df@tag\")) {\n if (!settings.displayMode) {\n throw new src_ParseError(\"\\\\tag works only in display equations\");\n }\n\n tree = [{\n type: \"tag\",\n mode: \"text\",\n body: tree,\n tag: parser.subparse([new Token(\"\\\\df@tag\")])\n }];\n }\n\n return tree;\n};\n\n/* harmony default export */ var src_parseTree = (parseTree);\n;// CONCATENATED MODULE: ./katex.js\n/* eslint no-console:0 */\n\n/**\n * This is the main entry point for KaTeX. Here, we expose functions for\n * rendering expressions either to DOM nodes or to markup strings.\n *\n * We also expose the ParseError class to check if errors thrown from KaTeX are\n * errors in the expression, or errors in javascript handling.\n */\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Parse and build an expression, and place that expression in the DOM node\n * given.\n */\nlet render = function (expression, baseNode, options) {\n baseNode.textContent = \"\";\n const node = renderToDomTree(expression, options).toNode();\n baseNode.appendChild(node);\n}; // KaTeX's styles don't work properly in quirks mode. Print out an error, and\n// disable rendering.\n\n\nif (typeof document !== \"undefined\") {\n if (document.compatMode !== \"CSS1Compat\") {\n typeof console !== \"undefined\" && console.warn(\"Warning: KaTeX doesn't work in quirks mode. Make sure your \" + \"website has a suitable doctype.\");\n\n render = function () {\n throw new src_ParseError(\"KaTeX doesn't work in quirks mode.\");\n };\n }\n}\n/**\n * Parse and build an expression, and return the markup for that.\n */\n\n\nconst renderToString = function (expression, options) {\n const markup = renderToDomTree(expression, options).toMarkup();\n return markup;\n};\n/**\n * Parse an expression and return the parse tree.\n */\n\n\nconst generateParseTree = function (expression, options) {\n const settings = new Settings(options);\n return src_parseTree(expression, settings);\n};\n/**\n * If the given error is a KaTeX ParseError and options.throwOnError is false,\n * renders the invalid LaTeX as a span with hover title giving the KaTeX\n * error message. Otherwise, simply throws the error.\n */\n\n\nconst renderError = function (error, expression, options) {\n if (options.throwOnError || !(error instanceof src_ParseError)) {\n throw error;\n }\n\n const node = buildCommon.makeSpan([\"katex-error\"], [new SymbolNode(expression)]);\n node.setAttribute(\"title\", error.toString());\n node.setAttribute(\"style\", \"color:\" + options.errorColor);\n return node;\n};\n/**\n * Generates and returns the katex build tree. This is used for advanced\n * use cases (like rendering to custom output).\n */\n\n\nconst renderToDomTree = function (expression, options) {\n const settings = new Settings(options);\n\n try {\n const tree = src_parseTree(expression, settings);\n return buildTree(tree, expression, settings);\n } catch (error) {\n return renderError(error, expression, settings);\n }\n};\n/**\n * Generates and returns the katex build tree, with just HTML (no MathML).\n * This is used for advanced use cases (like rendering to custom output).\n */\n\n\nconst renderToHTMLTree = function (expression, options) {\n const settings = new Settings(options);\n\n try {\n const tree = src_parseTree(expression, settings);\n return buildHTMLTree(tree, expression, settings);\n } catch (error) {\n return renderError(error, expression, settings);\n }\n};\n\n/* harmony default export */ var katex = ({\n /**\n * Current KaTeX version\n */\n version: \"0.16.11\",\n\n /**\n * Renders the given LaTeX into an HTML+MathML combination, and adds\n * it as a child to the specified DOM node.\n */\n render,\n\n /**\n * Renders the given LaTeX into an HTML+MathML combination string,\n * for sending to the client.\n */\n renderToString,\n\n /**\n * KaTeX error, usually during parsing.\n */\n ParseError: src_ParseError,\n\n /**\n * The shema of Settings\n */\n SETTINGS_SCHEMA: SETTINGS_SCHEMA,\n\n /**\n * Parses the given LaTeX into KaTeX's internal parse tree structure,\n * without rendering to HTML or MathML.\n *\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __parse: generateParseTree,\n\n /**\n * Renders the given LaTeX into an HTML+MathML internal DOM tree\n * representation, without flattening that representation to a string.\n *\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __renderToDomTree: renderToDomTree,\n\n /**\n * Renders the given LaTeX into an HTML internal DOM tree representation,\n * without MathML and without flattening that representation to a string.\n *\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __renderToHTMLTree: renderToHTMLTree,\n\n /**\n * extends internal font metrics object with a new object\n * each key in the new object represents a font name\n */\n __setFontMetrics: setFontMetrics,\n\n /**\n * adds a new symbol to builtin symbols table\n */\n __defineSymbol: defineSymbol,\n\n /**\n * adds a new function to builtin function list,\n * which directly produce parse tree elements\n * and have their own html/mathml builders\n */\n __defineFunction: defineFunction,\n\n /**\n * adds a new macro to builtin macro list\n */\n __defineMacro: defineMacro,\n\n /**\n * Expose the dom tree node types, which can be useful for type checking nodes.\n *\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __domTree: {\n Span: Span,\n Anchor: Anchor,\n SymbolNode: SymbolNode,\n SvgNode: SvgNode,\n PathNode: PathNode,\n LineNode: LineNode\n }\n});\n;// CONCATENATED MODULE: ./katex.webpack.js\n/**\n * This is the webpack entry point for KaTeX. As ECMAScript, flow[1] and jest[2]\n * doesn't support CSS modules natively, a separate entry point is used and\n * it is not flowtyped.\n *\n * [1] https://gist.github.com/lambdahands/d19e0da96285b749f0ef\n * [2] https://facebook.github.io/jest/docs/en/webpack.html\n */\n\n\n/* harmony default export */ var katex_webpack = (katex);\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\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 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Palestine) [ar-ps]\n//! author : Majd Al-Shihabi : https://github.com/majdal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arPs = moment.defineLocale('ar-ps', {\n months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n '_'\n ),\n monthsShort:\n 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .split('') // reversed since negative lookbehind not supported everywhere\n .reverse()\n .join('')\n .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n return numberMap[match];\n })\n .split('')\n .reverse()\n .join('')\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arPs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! author : Rasid Redzic : https://github.com/rasidre\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 'm':\n return withoutSuffix\n ? 'jedna minuta'\n : isFuture\n ? 'jednu minutu'\n : 'jedne minute';\n }\n }\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jedan sat';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: processRelativeTime,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = {\n standalone:\n 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Kurdish [ku-kmr]\n//! authors : Mazlum Özdogan : https://github.com/mergehez\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(num, withoutSuffix, key, isFuture) {\n var format = {\n s: ['çend sanîye', 'çend sanîyeyan'],\n ss: [num + ' sanîye', num + ' sanîyeyan'],\n m: ['deqîqeyek', 'deqîqeyekê'],\n mm: [num + ' deqîqe', num + ' deqîqeyan'],\n h: ['saetek', 'saetekê'],\n hh: [num + ' saet', num + ' saetan'],\n d: ['rojek', 'rojekê'],\n dd: [num + ' roj', num + ' rojan'],\n w: ['hefteyek', 'hefteyekê'],\n ww: [num + ' hefte', num + ' hefteyan'],\n M: ['mehek', 'mehekê'],\n MM: [num + ' meh', num + ' mehan'],\n y: ['salek', 'salekê'],\n yy: [num + ' sal', num + ' salan'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n // function obliqueNumSuffix(num) {\n // if(num.includes(':'))\n // num = parseInt(num.split(':')[0]);\n // else\n // num = parseInt(num);\n // return num == 0 || num % 10 == 1 ? 'ê'\n // : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n // }\n function ezafeNumSuffix(num) {\n num = '' + num;\n var l = num.substring(num.length - 1),\n ll = num.length > 1 ? num.substring(num.length - 2) : '';\n if (\n !(ll == 12 || ll == 13) &&\n (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n )\n return 'yê';\n return 'ê';\n }\n\n var kuKmr = moment.defineLocale('ku-kmr', {\n // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n // But the names below are more well known and handy\n months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n '_'\n ),\n monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n monthsParseExact: true,\n weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'bn' : 'BN';\n } else {\n return isLower ? 'pn' : 'PN';\n }\n },\n meridiemParse: /bn|BN|pn|PN/,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[a] YYYY[an]',\n LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n ll: 'Do MMM[.] YYYY[an]',\n lll: 'Do MMM[.] YYYY[an] HH:mm',\n llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n },\n calendar: {\n sameDay: '[Îro di saet] LT [de]',\n nextDay: '[Sibê di saet] LT [de]',\n nextWeek: 'dddd [di saet] LT [de]',\n lastDay: '[Duh di saet] LT [de]',\n lastWeek: 'dddd[a borî di saet] LT [de]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'di %s de',\n past: 'berî %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n ordinal: function (num, period) {\n var p = period.toLowerCase();\n if (p.includes('w') || p.includes('m')) return num + '.';\n\n return num + ezafeNumSuffix(num);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return kuKmr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays:\n 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort:\n 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'én time',\n hh: '%d timer',\n d: 'én dag',\n dd: '%d dager',\n w: 'én uke',\n ww: '%d uker',\n M: 'én måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/*! shepherd.js 12.0.6 */\n\n'use strict';\n\n/**\n * Checks if `value` is classified as an `Element`.\n * @param value The param to check if it is an Element\n */\nfunction isElement$1(value) {\n return value instanceof Element;\n}\n\n/**\n * Checks if `value` is classified as an `HTMLElement`.\n * @param value The param to check if it is an HTMLElement\n */\nfunction isHTMLElement$1(value) {\n return value instanceof HTMLElement;\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n * @param value The param to check if it is a function\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\n/**\n * Checks if `value` is classified as a `String` object.\n * @param value The param to check if it is a string\n */\nfunction isString(value) {\n return typeof value === 'string';\n}\n\n/**\n * Checks if `value` is undefined.\n * @param value The param to check if it is undefined\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\nclass Evented {\n /**\n * Adds an event listener for the given event string.\n *\n * @param {string} event\n * @param {Function} handler\n * @param ctx\n * @param {boolean} once\n * @returns\n */\n on(event, handler, ctx, once = false) {\n var _this$bindings$event;\n if (isUndefined(this.bindings)) {\n this.bindings = {};\n }\n if (isUndefined(this.bindings[event])) {\n this.bindings[event] = [];\n }\n (_this$bindings$event = this.bindings[event]) == null || _this$bindings$event.push({\n handler,\n ctx,\n once\n });\n return this;\n }\n\n /**\n * Adds an event listener that only fires once for the given event string.\n *\n * @param {string} event\n * @param {Function} handler\n * @param ctx\n * @returns\n */\n once(event, handler, ctx) {\n return this.on(event, handler, ctx, true);\n }\n\n /**\n * Removes an event listener for the given event string.\n *\n * @param {string} event\n * @param {Function} handler\n * @returns\n */\n off(event, handler) {\n if (isUndefined(this.bindings) || isUndefined(this.bindings[event])) {\n return this;\n }\n if (isUndefined(handler)) {\n delete this.bindings[event];\n } else {\n var _this$bindings$event2;\n (_this$bindings$event2 = this.bindings[event]) == null || _this$bindings$event2.forEach((binding, index) => {\n if (binding.handler === handler) {\n var _this$bindings$event3;\n (_this$bindings$event3 = this.bindings[event]) == null || _this$bindings$event3.splice(index, 1);\n }\n });\n }\n return this;\n }\n\n /**\n * Triggers an event listener for the given event string.\n *\n * @param {string} event\n * @returns\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trigger(event, ...args) {\n if (!isUndefined(this.bindings) && this.bindings[event]) {\n var _this$bindings$event4;\n (_this$bindings$event4 = this.bindings[event]) == null || _this$bindings$event4.forEach((binding, index) => {\n const {\n ctx,\n handler,\n once\n } = binding;\n const context = ctx || this;\n handler.apply(context, args);\n if (once) {\n var _this$bindings$event5;\n (_this$bindings$event5 = this.bindings[event]) == null || _this$bindings$event5.splice(index, 1);\n }\n });\n }\n return this;\n }\n}\n\nfunction _AsyncGenerator(e) {\n var r, t;\n function resume(r, t) {\n try {\n var n = e[r](t),\n o = n.value,\n u = o instanceof _OverloadYield;\n Promise.resolve(u ? o.v : o).then(function (t) {\n if (u) {\n var i = \"return\" === r ? \"return\" : \"next\";\n if (!o.k || t.done) return resume(i, t);\n t = e[i](t).value;\n }\n settle(n.done ? \"return\" : \"normal\", t);\n }, function (e) {\n resume(\"throw\", e);\n });\n } catch (e) {\n settle(\"throw\", e);\n }\n }\n function settle(e, n) {\n switch (e) {\n case \"return\":\n r.resolve({\n value: n,\n done: !0\n });\n break;\n case \"throw\":\n r.reject(n);\n break;\n default:\n r.resolve({\n value: n,\n done: !1\n });\n }\n (r = r.next) ? resume(r.key, r.arg) : t = null;\n }\n this._invoke = function (e, n) {\n return new Promise(function (o, u) {\n var i = {\n key: e,\n arg: n,\n resolve: o,\n reject: u,\n next: null\n };\n t ? t = t.next = i : (r = t = i, resume(e, n));\n });\n }, \"function\" != typeof e.return && (this.return = void 0);\n}\n_AsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n}, _AsyncGenerator.prototype.next = function (e) {\n return this._invoke(\"next\", e);\n}, _AsyncGenerator.prototype.throw = function (e) {\n return this._invoke(\"throw\", e);\n}, _AsyncGenerator.prototype.return = function (e) {\n return this._invoke(\"return\", e);\n};\nfunction _OverloadYield(e, d) {\n this.v = e, this.k = d;\n}\nfunction _awaitAsyncGenerator(e) {\n return new _OverloadYield(e, 0);\n}\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.indexOf(n) >= 0) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _wrapAsyncGenerator(r) {\n return function () {\n return new _AsyncGenerator(r.apply(this, arguments));\n };\n}\n\n/**\n * Special values that tell deepmerge to perform a certain action.\n */\nconst actions = {\n defaultMerge: Symbol(\"deepmerge-ts: default merge\"),\n skip: Symbol(\"deepmerge-ts: skip\")\n};\n/**\n * Special values that tell deepmergeInto to perform a certain action.\n */\n({\n defaultMerge: actions.defaultMerge\n});\n\n/**\n * The default function to update meta data.\n */\nfunction defaultMetaDataUpdater(previousMeta, metaMeta) {\n return metaMeta;\n}\n\n/**\n * Get the type of the given object.\n *\n * @param object - The object to get the type of.\n * @returns The type of the given object.\n */\nfunction getObjectType(object) {\n if (typeof object !== \"object\" || object === null) {\n return 0 /* ObjectType.NOT */;\n }\n if (Array.isArray(object)) {\n return 2 /* ObjectType.ARRAY */;\n }\n if (isRecord(object)) {\n return 1 /* ObjectType.RECORD */;\n }\n if (object instanceof Set) {\n return 3 /* ObjectType.SET */;\n }\n if (object instanceof Map) {\n return 4 /* ObjectType.MAP */;\n }\n return 5 /* ObjectType.OTHER */;\n}\n/**\n * Get the keys of the given objects including symbol keys.\n *\n * Note: Only keys to enumerable properties are returned.\n *\n * @param objects - An array of objects to get the keys of.\n * @returns A set containing all the keys of all the given objects.\n */\nfunction getKeys(objects) {\n const keys = new Set();\n /* eslint-disable functional/no-loop-statements, functional/no-expression-statements -- using a loop here is more efficient. */\n for (const object of objects) {\n for (const key of [...Object.keys(object), ...Object.getOwnPropertySymbols(object)]) {\n keys.add(key);\n }\n }\n /* eslint-enable functional/no-loop-statements, functional/no-expression-statements */\n return keys;\n}\n/**\n * Does the given object have the given property.\n *\n * @param object - The object to test.\n * @param property - The property to test.\n * @returns Whether the object has the property.\n */\nfunction objectHasProperty(object, property) {\n return typeof object === \"object\" && Object.prototype.propertyIsEnumerable.call(object, property);\n}\n/**\n * Get an iterable object that iterates over the given iterables.\n */\nfunction getIterableOfIterables(iterables) {\n return {\n // eslint-disable-next-line functional/functional-parameters\n *[Symbol.iterator]() {\n // eslint-disable-next-line functional/no-loop-statements\n for (const iterable of iterables) {\n // eslint-disable-next-line functional/no-loop-statements\n for (const value of iterable) {\n yield value;\n }\n }\n }\n };\n}\nconst validRecordToStringValues = new Set([\"[object Object]\", \"[object Module]\"]);\n/**\n * Does the given object appear to be a record.\n */\nfunction isRecord(value) {\n // All records are objects.\n if (!validRecordToStringValues.has(Object.prototype.toString.call(value))) {\n return false;\n }\n const {\n constructor\n } = value;\n // If has modified constructor.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (constructor === undefined) {\n return true;\n }\n // eslint-disable-next-line prefer-destructuring\n const prototype = constructor.prototype;\n // If has modified prototype.\n if (prototype === null || typeof prototype !== \"object\" || !validRecordToStringValues.has(Object.prototype.toString.call(prototype))) {\n return false;\n }\n // If constructor does not have an Object-specific method.\n // eslint-disable-next-line sonarjs/prefer-single-boolean-return, no-prototype-builtins\n if (!prototype.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n // Most likely a record.\n return true;\n}\n\n/**\n * The default strategy to merge records.\n *\n * @param values - The records.\n */\nfunction mergeRecords$2(values, utils, meta) {\n const result = {};\n /* eslint-disable functional/no-loop-statements, functional/no-conditional-statements, functional/no-expression-statements, functional/immutable-data -- using imperative code here is more performant. */\n for (const key of getKeys(values)) {\n const propValues = [];\n for (const value of values) {\n if (objectHasProperty(value, key)) {\n propValues.push(value[key]);\n }\n }\n if (propValues.length === 0) {\n continue;\n }\n const updatedMeta = utils.metaDataUpdater(meta, {\n key,\n parents: values\n });\n const propertyResult = mergeUnknowns(propValues, utils, updatedMeta);\n if (propertyResult === actions.skip) {\n continue;\n }\n if (key === \"__proto__\") {\n Object.defineProperty(result, key, {\n value: propertyResult,\n configurable: true,\n enumerable: true,\n writable: true\n });\n } else {\n result[key] = propertyResult;\n }\n }\n /* eslint-enable functional/no-loop-statements, functional/no-conditional-statements, functional/no-expression-statements, functional/immutable-data */\n return result;\n}\n/**\n * The default strategy to merge arrays.\n *\n * @param values - The arrays.\n */\nfunction mergeArrays$2(values) {\n return values.flat();\n}\n/**\n * The default strategy to merge sets.\n *\n * @param values - The sets.\n */\nfunction mergeSets$2(values) {\n return new Set(getIterableOfIterables(values));\n}\n/**\n * The default strategy to merge maps.\n *\n * @param values - The maps.\n */\nfunction mergeMaps$2(values) {\n return new Map(getIterableOfIterables(values));\n}\n/**\n * Get the last value in the given array.\n */\nfunction mergeOthers$2(values) {\n return values.at(-1);\n}\nvar defaultMergeFunctions = /*#__PURE__*/Object.freeze({\n __proto__: null,\n mergeArrays: mergeArrays$2,\n mergeMaps: mergeMaps$2,\n mergeOthers: mergeOthers$2,\n mergeRecords: mergeRecords$2,\n mergeSets: mergeSets$2\n});\n\n/**\n * Deeply merge objects.\n *\n * @param objects - The objects to merge.\n */\nfunction deepmerge(\n// eslint-disable-next-line functional/functional-parameters\n...objects) {\n return deepmergeCustom({})(...objects);\n}\nfunction deepmergeCustom(options, rootMetaData) {\n const utils = getUtils(options, customizedDeepmerge);\n /**\n * The customized deepmerge function.\n */\n function customizedDeepmerge(\n // eslint-disable-next-line functional/functional-parameters\n ...objects) {\n return mergeUnknowns(objects, utils, rootMetaData);\n }\n return customizedDeepmerge;\n}\n/**\n * The the utils that are available to the merge functions.\n *\n * @param options - The options the user specified\n */\nfunction getUtils(options, customizedDeepmerge) {\n var _options$metaDataUpda, _options$enableImplic;\n return {\n defaultMergeFunctions,\n mergeFunctions: _extends({}, defaultMergeFunctions, Object.fromEntries(Object.entries(options).filter(([key, option]) => Object.hasOwn(defaultMergeFunctions, key)).map(([key, option]) => option === false ? [key, mergeOthers$2] : [key, option]))),\n metaDataUpdater: (_options$metaDataUpda = options.metaDataUpdater) != null ? _options$metaDataUpda : defaultMetaDataUpdater,\n deepmerge: customizedDeepmerge,\n useImplicitDefaultMerging: (_options$enableImplic = options.enableImplicitDefaultMerging) != null ? _options$enableImplic : false,\n actions\n };\n}\n/**\n * Merge unknown things.\n *\n * @param values - The values.\n */\nfunction mergeUnknowns(values, utils, meta) {\n if (values.length === 0) {\n return undefined;\n }\n if (values.length === 1) {\n return mergeOthers$1(values, utils, meta);\n }\n const type = getObjectType(values[0]);\n /* eslint-disable functional/no-loop-statements, functional/no-conditional-statements -- using imperative code here is more performant. */\n if (type !== 0 /* ObjectType.NOT */ && type !== 5 /* ObjectType.OTHER */) {\n for (let m_index = 1; m_index < values.length; m_index++) {\n if (getObjectType(values[m_index]) === type) {\n continue;\n }\n return mergeOthers$1(values, utils, meta);\n }\n }\n /* eslint-enable functional/no-loop-statements, functional/no-conditional-statements */\n switch (type) {\n case 1 /* ObjectType.RECORD */:\n {\n return mergeRecords$1(values, utils, meta);\n }\n case 2 /* ObjectType.ARRAY */:\n {\n return mergeArrays$1(values, utils, meta);\n }\n case 3 /* ObjectType.SET */:\n {\n return mergeSets$1(values, utils, meta);\n }\n case 4 /* ObjectType.MAP */:\n {\n return mergeMaps$1(values, utils, meta);\n }\n default:\n {\n return mergeOthers$1(values, utils, meta);\n }\n }\n}\n/**\n * Merge records.\n *\n * @param values - The records.\n */\nfunction mergeRecords$1(values, utils, meta) {\n const result = utils.mergeFunctions.mergeRecords(values, utils, meta);\n if (result === actions.defaultMerge || utils.useImplicitDefaultMerging && result === undefined && utils.mergeFunctions.mergeRecords !== utils.defaultMergeFunctions.mergeRecords) {\n return utils.defaultMergeFunctions.mergeRecords(values, utils, meta);\n }\n return result;\n}\n/**\n * Merge arrays.\n *\n * @param values - The arrays.\n */\nfunction mergeArrays$1(values, utils, meta) {\n const result = utils.mergeFunctions.mergeArrays(values, utils, meta);\n if (result === actions.defaultMerge || utils.useImplicitDefaultMerging && result === undefined && utils.mergeFunctions.mergeArrays !== utils.defaultMergeFunctions.mergeArrays) {\n return utils.defaultMergeFunctions.mergeArrays(values);\n }\n return result;\n}\n/**\n * Merge sets.\n *\n * @param values - The sets.\n */\nfunction mergeSets$1(values, utils, meta) {\n const result = utils.mergeFunctions.mergeSets(values, utils, meta);\n if (result === actions.defaultMerge || utils.useImplicitDefaultMerging && result === undefined && utils.mergeFunctions.mergeSets !== utils.defaultMergeFunctions.mergeSets) {\n return utils.defaultMergeFunctions.mergeSets(values);\n }\n return result;\n}\n/**\n * Merge maps.\n *\n * @param values - The maps.\n */\nfunction mergeMaps$1(values, utils, meta) {\n const result = utils.mergeFunctions.mergeMaps(values, utils, meta);\n if (result === actions.defaultMerge || utils.useImplicitDefaultMerging && result === undefined && utils.mergeFunctions.mergeMaps !== utils.defaultMergeFunctions.mergeMaps) {\n return utils.defaultMergeFunctions.mergeMaps(values);\n }\n return result;\n}\n/**\n * Merge other things.\n *\n * @param values - The other things.\n */\nfunction mergeOthers$1(values, utils, meta) {\n const result = utils.mergeFunctions.mergeOthers(values, utils, meta);\n if (result === actions.defaultMerge || utils.useImplicitDefaultMerging && result === undefined && utils.mergeFunctions.mergeOthers !== utils.defaultMergeFunctions.mergeOthers) {\n return utils.defaultMergeFunctions.mergeOthers(values);\n }\n return result;\n}\n\n/**\n * Binds all the methods on a JS Class to the `this` context of the class.\n * Adapted from https://github.com/sindresorhus/auto-bind\n * @param self The `this` context of the class\n * @return The `this` context of the class\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction autoBind(self) {\n const keys = Object.getOwnPropertyNames(self.constructor.prototype);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const val = self[key];\n if (key !== 'constructor' && typeof val === 'function') {\n self[key] = val.bind(self);\n }\n }\n return self;\n}\n\n/**\n * Sets up the handler to determine if we should advance the tour\n * @param step The step instance\n * @param selector\n * @private\n */\nfunction _setupAdvanceOnHandler(step, selector) {\n return event => {\n if (step.isOpen()) {\n const targetIsEl = step.el && event.currentTarget === step.el;\n const targetIsSelector = !isUndefined(selector) && event.currentTarget.matches(selector);\n if (targetIsSelector || targetIsEl) {\n step.tour.next();\n }\n }\n };\n}\n\n/**\n * Bind the event handler for advanceOn\n * @param step The step instance\n */\nfunction bindAdvance(step) {\n // An empty selector matches the step element\n const {\n event,\n selector\n } = step.options.advanceOn || {};\n if (event) {\n const handler = _setupAdvanceOnHandler(step, selector);\n\n // TODO: this should also bind/unbind on show/hide\n let el = null;\n if (!isUndefined(selector)) {\n el = document.querySelector(selector);\n if (!el) {\n return console.error(`No element was found for the selector supplied to advanceOn: ${selector}`);\n }\n }\n if (el) {\n el.addEventListener(event, handler);\n step.on('destroy', () => {\n return el.removeEventListener(event, handler);\n });\n } else {\n document.body.addEventListener(event, handler, true);\n step.on('destroy', () => {\n return document.body.removeEventListener(event, handler, true);\n });\n }\n } else {\n return console.error('advanceOn was defined, but no event name was passed.');\n }\n}\n\nclass StepNoOp {\n constructor(_options) {}\n}\nclass TourNoOp {\n constructor(_tour, _options) {}\n}\n\n/**\n * Ensure class prefix ends in `-`\n * @param prefix - The prefix to prepend to the class names generated by nano-css\n * @return The prefix ending in `-`\n */\nfunction normalizePrefix(prefix) {\n if (!isString(prefix) || prefix === '') {\n return '';\n }\n return prefix.charAt(prefix.length - 1) !== '-' ? `${prefix}-` : prefix;\n}\n\n/**\n * Resolves attachTo options, converting element option value to a qualified HTMLElement.\n * @param step - The step instance\n * @returns {{}|{element, on}}\n * `element` is a qualified HTML Element\n * `on` is a string position value\n */\nfunction parseAttachTo(step) {\n const options = step.options.attachTo || {};\n const returnOpts = Object.assign({}, options);\n if (isFunction(returnOpts.element)) {\n // Bind the callback to step so that it has access to the object, to enable running additional logic\n returnOpts.element = returnOpts.element.call(step);\n }\n if (isString(returnOpts.element)) {\n // Can't override the element in user opts reference because we can't\n // guarantee that the element will exist in the future.\n try {\n returnOpts.element = document.querySelector(returnOpts.element);\n } catch (e) {\n // TODO\n }\n if (!returnOpts.element) {\n console.error(`The element for this Shepherd step was not found ${options.element}`);\n }\n }\n return returnOpts;\n}\n\n/**\n * Checks if the step should be centered or not. Does not trigger attachTo.element evaluation, making it a pure\n * alternative for the deprecated step.isCentered() method.\n */\nfunction shouldCenterStep(resolvedAttachToOptions) {\n if (resolvedAttachToOptions === undefined || resolvedAttachToOptions === null) {\n return true;\n }\n return !resolvedAttachToOptions.element || !resolvedAttachToOptions.on;\n}\n\n/**\n * Create a unique id for steps, tours, modals, etc\n */\nfunction uuid() {\n let d = Date.now();\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return _extends({\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }, padding);\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return _extends({}, rect, {\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}\n\nconst _excluded2 = [\"mainAxis\", \"crossAxis\", \"fallbackPlacements\", \"fallbackStrategy\", \"fallbackAxisSideDirection\", \"flipAlignment\"],\n _excluded4 = [\"mainAxis\", \"crossAxis\", \"limiter\"];\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition$1 = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = _extends({}, middlewareData, {\n [name]: _extends({}, middlewareData[name], data)\n });\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? _extends({}, rects.floating, {\n x,\n y\n }) : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: _extends({\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset\n }, shouldAddOffset && {\n alignmentOffset\n }),\n reset: shouldAddOffset\n };\n }\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip$1 = function flip(options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const _evaluate2 = evaluate(options, state),\n {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true\n } = _evaluate2,\n detectOverflowOptions = _objectWithoutPropertiesLoose(_evaluate2, _excluded2);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift$1 = function shift(options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const _evaluate4 = evaluate(options, state),\n {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n }\n } = _evaluate4,\n detectOverflowOptions = _objectWithoutPropertiesLoose(_evaluate4, _excluded4);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn(_extends({}, state, {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n }));\n return _extends({}, limitedCoords, {\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n });\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift$1 = function limitShift(options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : _extends({\n mainAxis: 0,\n crossAxis: 0\n }, rawOffset);\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = _extends({}, clippingAncestor, {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n });\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\nconst getElementRects = async function getElementRects(data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, _extends({}, options, {\n // Handle